{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "f809cbed",
   "metadata": {},
   "source": [
    "# Time Series Data Denoising using Autoencoders"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7f71cdb6",
   "metadata": {},
   "source": [
    "The project revolves around the implementation of a Long Short-Term Memory (LSTM) model within an autoencoder framework to effectively denoise time series data. \n",
    "The choice of LSTM is rooted in its adeptness at capturing temporal patterns and addressing gradient vanishing issues often encountered in conventional recurrent neural networks (RNN)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "d80b5e5e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Libraries loading\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from tensorflow.keras.layers import Input, Dense, LSTM, RepeatVector\n",
    "from tensorflow.keras.models import Model\n",
    "from sklearn.metrics import mean_squared_error\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "9fc99e10",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Loading datasets\n",
    "X_train = pd.read_csv('D:\\\\Python\\\\Datafolder\\\\time-series_data\\\\X_train.csv', header = None)\n",
    "X_test = pd.read_csv('D:\\\\Python\\\\Datafolder\\\\time-series_data\\\\X_test.csv', header = None)\n",
    "X_val = pd.read_csv('D:\\\\Python\\\\Datafolder\\\\time-series_data\\\\X_val.csv', header = None)\n",
    "Y_train = pd.read_csv('D:\\\\Python\\\\Datafolder\\\\time-series_data\\\\Y_train.csv', header = None)\n",
    "Y_test = pd.read_csv('D:\\\\Python\\\\Datafolder\\\\time-series_data\\\\Y_test.csv', header = None)\n",
    "Y_val = pd.read_csv('D:\\\\Python\\\\Datafolder\\\\time-series_data\\\\Y_val.csv', header = None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "44127730",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 20 entries, 1521 to 1540\n",
      "Columns: 331 entries, 0 to 330\n",
      "dtypes: float64(331)\n",
      "memory usage: 51.8 KB\n"
     ]
    }
   ],
   "source": [
    "# Selecting Testing data\n",
    "X_test1 = X_test[1521:1541]\n",
    "X_test1.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "ede44e7b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 20 entries, 1521 to 1540\n",
      "Columns: 331 entries, 0 to 330\n",
      "dtypes: float64(331)\n",
      "memory usage: 51.8 KB\n"
     ]
    }
   ],
   "source": [
    "# Selecting Testing data\n",
    "Y_test1 = Y_test[1521:1541]\n",
    "Y_test1.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "8d861455",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Reshaping the data\n",
    "X_train = X_train.values.reshape((X_train.shape[0], 1, X_train.shape[1]))\n",
    "Y_train = Y_train.values.reshape((Y_train.shape[0], 1, Y_train.shape[1]))\n",
    "X_test1 = X_test1.values.reshape((X_test1.shape[0], 1, X_test1.shape[1]))\n",
    "Y_test1 = Y_test1.values.reshape((Y_test1.shape[0], 1, Y_test1.shape[1]))\n",
    "X_val = X_val.values.reshape((X_val.shape[0], 1, X_val.shape[1]))\n",
    "Y_val = Y_val.values.reshape((Y_val.shape[0], 1, Y_val.shape[1]))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d75d8a56",
   "metadata": {},
   "source": [
    "### The autoencoder model architecture"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "85450f69",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define the autoencoder model\n",
    "inputs = Input(shape=(X_train.shape[1], X_train.shape[2]))\n",
    "x = LSTM(64, activation='relu', return_sequences=True)(inputs)\n",
    "x = LSTM(32, activation='relu', return_sequences=False)(x)\n",
    "x = RepeatVector(X_train.shape[1])(x)\n",
    "x = LSTM(32, activation='relu', return_sequences=True)(x)\n",
    "x = LSTM(64, activation='relu', return_sequences=True)(x)\n",
    "outputs = Dense(X_train.shape[2])(x)\n",
    "model = Model(inputs=inputs, outputs=outputs)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fbcf2ca6",
   "metadata": {},
   "source": [
    "### Model summary"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "ec3cfca7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"model\"\n",
      "_________________________________________________________________\n",
      " Layer (type)                Output Shape              Param #   \n",
      "=================================================================\n",
      " input_1 (InputLayer)        [(None, 1, 331)]          0         \n",
      "                                                                 \n",
      " lstm (LSTM)                 (None, 1, 64)             101376    \n",
      "                                                                 \n",
      " lstm_1 (LSTM)               (None, 32)                12416     \n",
      "                                                                 \n",
      " repeat_vector (RepeatVector  (None, 1, 32)            0         \n",
      " )                                                               \n",
      "                                                                 \n",
      " lstm_2 (LSTM)               (None, 1, 32)             8320      \n",
      "                                                                 \n",
      " lstm_3 (LSTM)               (None, 1, 64)             24832     \n",
      "                                                                 \n",
      " dense (Dense)               (None, 1, 331)            21515     \n",
      "                                                                 \n",
      "=================================================================\n",
      "Total params: 168,459\n",
      "Trainable params: 168,459\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "# model summary\n",
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "45edc3a9",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Compiling the model\n",
    "model.compile(optimizer='adam', loss='mse')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d117d9d7",
   "metadata": {},
   "source": [
    "### Model training"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "1cd42ede",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/10\n",
      "147/147 [==============================] - 11s 21ms/step - loss: 0.1122 - val_loss: 0.0020\n",
      "Epoch 2/10\n",
      "147/147 [==============================] - 3s 23ms/step - loss: 0.0026 - val_loss: 0.0018\n",
      "Epoch 3/10\n",
      "147/147 [==============================] - 3s 20ms/step - loss: 0.0025 - val_loss: 0.0016\n",
      "Epoch 4/10\n",
      "147/147 [==============================] - 3s 21ms/step - loss: 0.0025 - val_loss: 0.0028\n",
      "Epoch 5/10\n",
      "147/147 [==============================] - 3s 18ms/step - loss: 0.0023 - val_loss: 0.0013\n",
      "Epoch 6/10\n",
      "147/147 [==============================] - 2s 11ms/step - loss: 0.0019 - val_loss: 0.0023\n",
      "Epoch 7/10\n",
      "147/147 [==============================] - 1s 9ms/step - loss: 0.0018 - val_loss: 8.4697e-04\n",
      "Epoch 8/10\n",
      "147/147 [==============================] - 1s 9ms/step - loss: 0.0018 - val_loss: 8.7396e-04\n",
      "Epoch 9/10\n",
      "147/147 [==============================] - 2s 12ms/step - loss: 0.0018 - val_loss: 8.9470e-04\n",
      "Epoch 10/10\n",
      "147/147 [==============================] - 2s 12ms/step - loss: 0.0017 - val_loss: 8.2445e-04\n"
     ]
    }
   ],
   "source": [
    "# Training the model\n",
    "history = model.fit(X_train, Y_train, epochs=10, batch_size=64, validation_data=(X_val, Y_val))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "d0038e18",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1/1 - 0s - loss: 4.3545e-04 - 32ms/epoch - 32ms/step\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.0004354507545940578"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Model evaluation\n",
    "model.evaluate(X_test1, Y_test1, verbose=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "382d8cc1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plotting the training and validation loss\n",
    "plt.plot(history.history['loss'], label='train')\n",
    "plt.plot(history.history['val_loss'], label='test')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "a587dca3",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Using the trained autoencoder to denoise new time-series data\n",
    "denoised_X_test = model.predict(X_test1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "2d1c2cf9",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Flattening the 3D array into a 2D array\n",
    "X_test_flat = np.reshape(X_test1, (X_test1.shape[0], -1))\n",
    "denoised_X_test_flat = np.reshape(denoised_X_test, (denoised_X_test.shape[0], -1))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8f931f46",
   "metadata": {},
   "source": [
    "### The mean squared error for the model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "be0f4ed4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mean Squared Error:  0.0028935522475247574\n"
     ]
    }
   ],
   "source": [
    "# Calculating MSE between denoised and original data\n",
    "mse = mean_squared_error(X_test_flat, denoised_X_test_flat)\n",
    "print(\"Mean Squared Error: \", mse)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eb511551",
   "metadata": {},
   "source": [
    "### A bar plot showing the original data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "c93bb6c7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEICAYAAABPgw/pAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAfsklEQVR4nO3de7xVdZ3/8dc7EPGC4oVMQIUYNNDgKKjZ6ChjijoPgzHzkkZY5jCBoT9//WS6UqZpNmPTwwsPNENLM8MsfoU/dTI1QydhQBGUi0hyROV4QSQggT6/P9Y6tNns2znsc/be67yfj8d+nL3W+u61Puu7136ftb/7pojAzMwa3/tqXYCZmVWHA93MLCMc6GZmGeFANzPLCAe6mVlGONDNzDLCgV6nJD0q6eIabXuApJDUvYO3M1XSTzp4Gw9I+kxHbiNnWx2+PyW2fYGkh6rdtoJ1rZT0sQrbjpf0RDW2a4U50DtZGtRvS9q11rVUQy1DrBIRcXpE3FHt9Uo6SVJztdfbXhFxV0ScWu22tVLvx1W9cqB3IkkDgBOAAD7eidvt1lnbss7X0c+krHE40DvXOOApYAZQyTDAIEl/lPSOpF9J2rd1gaSfS3otXfa4pMNzls2QdIuk2ZL+DIzKX3H6TOE7xdaf17avpFmS3pK0XNLn0/mnAV8GzpW0XtIzRW5/paRXJL0raYmkk3MW95B0Z7pskaSRObcbkta5Nl328XT+wHTe+9Lp2yStybndTyRdlrOfF6fXx0t6QtL30mdJL0k6Ped2A9O+fFfSf0m6qdBZoqQ9gAeAvul+r5fUt4L96SvpPkkt6ba/WKi/0rZ7p+tpkfQnSV/N2d/xkv4g6QZJbwFT84czJJ2a9vU7km6W9Fh+P+S0DUkTJC1L++UmSUqXDZL0iKQ3Jb0h6S5JvYvVnbcP+6XHzTpJfwQG5S3/T0mr0uXzJJ2Qzi94XEm6SNLzad+ukPQvldTRpUSEL510AZYDXwBGAJuBA0q0fRR4BTgC2AO4D/hJzvLPAr2AXYHvAwtyls0A3gH+nuSfds+2rB8YQPIsons6/RhwM9ATaAJagJPTZVNz6yqwncOAVUDfnHUPyrntJuAMoBvwHeCpdNkuaX99GegB/CPwLnBYuvxlYER6fQmwAhiSs+zInP28OL0+Pu33z6fb+1dgNaB0+ZPA99LtHQ+sK7ZvwElAc968UvvzPmAe8PV0/R9Max5dZP13Ar9K7+MBwFLgczn7sQW4FOgO7JbOeyJdvn9a+1np8snpfuf2wxM52wrg10Bv4OD0/j0tXfZ3wCkkx1kf4HHg+zm3XQl8rMg+3APcS3J8HUFyvOVu90Jgv7TGK4DXSI9VChxXwD+R/FMQcCKwATiq1o/rerrUvICuckkDYjOwfzr9AnB5ifaPAtfmTA8F3gO6FWjbO31Q7p1OzwDuLFNP0fWTE+jAQcBWoFdO2+8AM9LrOzzw8rbzd8Aa4GPALnnLpgL/lVfDxvT6CekD/H05y38KTE2v/xj4X8AHSAL9u8AEYCCwtvV27Bjoy3PWt3u6nx9Ig2wLsHvO8p8U2zeKB3qx/TkWeDmv/b8BPyqw7m7AX4ChOfP+BXg0Zz/y1zWevwX6OODJnGUi+adaKtCPz5m+F5hSZL/HAvNzpldSINDTfdgMfChn3jW52y1wm7eB4ZUcV2mbXwKTq/H4zMrFQy6d5zPAQxHxRjp9N+WHXVblXP8TyVnr/pK6SbpW0ouS1pE8qCA5Myt02zatP69NX+CtiHg3r22/CtZPRCwHLiN5gK6RdE/O8AQkod1qA9BTyZhwX2BVRPy1yHYfIwnVfyA5a3yU5KztROD3ebfLtW17EbEhvbpnzn5uyGlbSR8WXX/e/hxCMkSztvVC8uzjgALr2J/kLP5POfPy+7xUbX1zl0eSfuVewM2ve08ASe9P77NX0mPtJ+x4jBTSh+SEIP8Y20bSFekQyjtpf+xdat2STpf0lJKhv7Ukz4QqqaXLcKB3Akm7AecAJyoZ934NuBwYLml4iZselHP9YJIznjeATwFjSM569yY5o4bkTKxVJV+jWWz9uVYD+0rqldf2lUq3ExF3R8TxJKEWwHUV1LYaOKh13LjAdh8jOYs/Kb3+BMkQ04npdFu9SrKfu+fMO6hYYyrr31yrgJcionfOpVdEnFGg7Rsk98UhOfNy973c9l8F+rdOpOPh/Ys3L+k76baGRcReJMMkKn0TIBm22cKOx1hrTScAV5I8LvaJiN4kw4St695u/5S8K+w+kiGxA9L2syuspctwoHeOsSTDFkNJxqCbgCHA70meHhdzoaShach8C5gZEVtJxlX/ArxJMmxwTTvrKrb+bSJiFTAH+I6knpKGAZ8D7kqbvA4MyAvebSQdJukf0wfkJmAjSV+U89/An4H/I2kXSScBZ5KMyxIRy9J1XQg8HhHr0lo+QTsCPSL+BMwleYGxh6Tj0u0V8zqwn6S9K9zEH4F1Sl4g3i19lnWEpKML1LKVZNjjakm9JB1CMrxU6dv4fgN8WNLY9NnBRJJhpfboBawH1krqB3ypkhul+/ALkv7cXdJQtn9G2osk8FuA7pK+DuyVszz/uOpBMo7fAmxR8mJ2Xb/1shYc6J3jMyRjpS9HxGutF+BG4AIVf9vZj0nGw18jeUGy9V0Rd5I8fX0FWEzyzpn2KLb+fOeTPAtYDdwPfCMiHk6X/Tz9+6ak/ylw212Ba0nOOl8D3k8y1FBSRLxH8tbO09Pb3gyMi4gXcpo9BrwZES/nTAuYX279RVwAHEfyj/LbwM9I/nEWqu8FkjH9FekQSt9C7XLabyX5B9EEvJTu020kz7AKuZTkH9oKkmcfdwO3V7IT6bDeJ0leV3iT5ERibrF9KeObwFEkZ8+/IQnpSk0iGbp5jeQ4+1HOsgdJ3im0lORY3sT2wzPbHVfpkN8XSf7RvU3yLHVWG/cl81pf3bcuRtKjJC863VbrWuqVpJ8BL0TEN2pdy85Iz3KbgQsi4ne1rsc6js/QzVKSjk7fd/2+9L3QY0jeSdFwJI2W1Dsd6voyyTOX9j6TswbhT5iZ/c0HSIYU9iM5o/3XiGjv8E2tHUcyTNODZFhubERsrG1J1tE85GJmlhEecjEzy4iaDbnsv//+MWDAgFpt3sysIc2bN++NiOhTaFnNAn3AgAHMnTu3Vps3M2tIkv5UbJmHXMzMMsKBbmaWEQ50M7OM8PvQzWpo8+bNNDc3s2nTplqXYnWmZ8+e9O/fn1122aXi2zjQzWqoubmZXr16MWDAANIfCTIjInjzzTdpbm5m4MCBFd+u7JCLpNslrZH0XJHlkvQDJT9N9qyko9pQt1mXtmnTJvbbbz+HuW1HEvvtt1+bn7lVMoY+AzitxPLTgcHp5RLgljZVYNbFOcytkPYcF2UDPSIeB94q0WQMyc+dRUQ8BfSWdGCbKzEzs51SjTH0fmz/PcbN6bxX8xtKuoTkLJ6DDz44f7FZl3fDw0urur7LTzm0quuz+laNty0Wel5Q8Bu/ImJ6RIyMiJF9+hT85GqmVPvBadYRmpubGTNmDIMHD2bQoEFMnjyZ9957r2Db1atXc/bZZ5dd5xlnnMHatWvbVc/UqVP53ve+t8P8L37xi1x11VXbpq+++momTpy4Q7vX1yXjzjNmzGD16tXtquHRRx9lzpw5BZf95y230qdPH4488kgGDx7M6NGji7bN9ctf/pLFixe3q55KVSPQm9n+dwP7k/yyjdk2/udWnyKCs846i7Fjx7Js2TKWLl3K+vXr+cpXvrJD2y1bttC3b19mzpxZdr2zZ8+md+/eVa3129/+Nj/60Y9YsWIFL730ErfddhtXX3110fYdFegA5557LvPnz2fZsmVMmTKFs846i+eff77kOhsl0GcB49J3u3wEeCcidhhusewpFNIO7sbyyCOP0LNnTy666CIAunXrxg033MDtt9/Ohg0bmDFjBp/85Cc588wzOfXUU1m5ciVHHHEEABs2bOCcc85h2LBhnHvuuRx77LHbvp9pwIABvPHGG6xcuZIhQ4bw+c9/nsMPP5xTTz2VjRuTr2W/9dZbOfrooxk+fDif+MQn2LBhQ8la99prL66++momTZrExIkT+da3vlX0n8bMmTOZO3cuF1xwAU1NTWzcuJF58+Zx4oknMmLECEaPHs2rryYx9YMf/IChQ4cybNgwzjvvPFauXMm0adO44YYbaGpq4ve//33JukaNGsUll1zC9OnTi+7XnDlzmDVrFl/60pdoamrixRdfbPP+V6KSty3+FHgSOExSs6TPSZogaULaZDbJ7x4uB24FvrDTVZlZp1i0aBEjRozYbt5ee+3FwQcfzPLlywF48sknueOOO3jkkUe2a3fzzTezzz778Oyzz/K1r32NefPmFdzGsmXLmDhxIosWLaJ3797cd999AJx11lk8/fTTPPPMMwwZMoQf/vCHZes9//zzefvtt1m3bh2f/vSni7Y7++yzGTlyJHfddRcLFiyge/fuXHrppcycOZN58+bx2c9+dtuzkGuvvZb58+fz7LPPMm3aNAYMGMCECRO4/PLLWbBgASeccELZuo466iheeOGFovv10Y9+lI9//ONcf/31LFiwgEGDBrVr/8sp+6JoRJxfZnmQ/Kq4WU3d8PBSvwjYRhFR8O1xufNPOeUU9t133x3aPPHEE0yePBmAI444gmHDhhXcxsCBA2lqagJgxIgRrFy5EoDnnnuOr371q6xdu5b169czevTosvU2Nzfz2muvIYn169ez5557VrKbLFmyhOeee45TTjkFgK1bt3Lggcmb8YYN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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# indexing for random sample\n",
    "sample_idx = 10\n",
    "# Getting the originaltime series\n",
    "original_ts = X_test1[sample_idx, 0, :]\n",
    "# Creating a bar plot\n",
    "plt.bar(range(len(original_ts)), original_ts, alpha=0.5, label='Original X_test Data')\n",
    "plt.legend()\n",
    "plt.title('A bar plot showing the original data')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7d5a10be",
   "metadata": {},
   "source": [
    "### A bar plot showing denoised data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "0b4aee61",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# indexing for random sample\n",
    "sample_idx = 10\n",
    "# Getting the denoised time series\n",
    "denoised_ts = denoised_X_test[sample_idx, :].flatten()  # reshaping to 1D array\n",
    "# Creating a bar plot\n",
    "plt.bar(range(len(denoised_ts)), denoised_ts, alpha=0.5, label='Denoised X_test Data')\n",
    "plt.legend()\n",
    "plt.title('A bar plot showing the denoised data')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ebec62be",
   "metadata": {},
   "source": [
    "### A Scatter plot showing the original and denoised data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "fac83f5a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlkAAAEvCAYAAAB2a9QGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABwaUlEQVR4nO39e5gcV33nj79OVV/n1iONpNHoPrIsW0K+YdnGARuIMQgIgZDwA5IQTJLHEC4Py4bkm+w+WZLlycKTJV+HLxCIg1kuy0IghAUWYmwCrDEYItlYtqSxZVmSrctoNBppem59q+rz++NUz/SM5tI9U91V3f15PY8ezfRUV506deqc9/l8PudzlNYaQRAEQRAEwV+soAsgCIIgCILQjIjIEgRBEARBqAEisgRBEARBEGqAiCxBEARBEIQaICJLEARBEAShBojIEgRBEARBqAGRoAswH2vWrNHbtm0LuhiCIAiCIAhL8uijj17QWq+d+3koRda2bds4cOBA0MUQBEEQBEFYEqXUc/N9Lu5CQRAEQRCEGiAiSxAEQRAEoQaIyBIEQRAEQagBoYzJEgRBEATBPwqFAqdPnyabzQZdlIYmkUiwadMmotFoRceLyBIEQRCEJuf06dN0dnaybds2lFJBF6ch0VozMjLC6dOn6e/vr+g74i4UBEEQhCYnm83S09MjAmsFKKXo6empyhooIksQBEEQWgARWCun2jpcUmQppT6nlDqvlDq0wN+VUur/U0odU0o9oZR6Ydnf9imlnvb+9mdVlUwQhGkGBtPc8+BRPvj1g9zz4FEGBtNBF0kQhBDQSH3D6dOnef3rX8+VV17JFVdcwfvf/37y+fxlx509e5bf+q3fWvJ8r3nNaxgdHV1WWf7yL/+Sj33sY8v6bjVUYsn6PLBvkb+/GrjS+3c38GkApZQNfMr7+27grUqp3SsprCC0IgODae596ATpTIG+VIJ0psC9D50IdWcqCELtaaS+QWvNG9/4Rt7whjfwzDPPcPToUSYmJvjP//k/zzrOcRw2bNjAP//zPy95zu9973t0d3fXqMT+sGTgu9b6IaXUtkUOeT3wRa21Bn6ulOpWSvUB24BjWuvjAEqpr3rHHllxqQWhhbj/0BCpZJRU0qxmKf1//6EhdvWlgiyaIAgBUsu+YWAwzf2HhjgzmmFjd5J9e3pXdM4f/vCHJBIJ3vGOdwBg2zb33HMP/f399Pf386Mf/YhsNsvk5CSf+9zn+LVf+zUOHTrE1NQUd911F0899RS7du3i5MmTfOpTn2Lv3r3Tu8NMTEzw6le/mpe85CX87Gc/Y+PGjXzrW98imUzyj//4j9x7773k83l27NjBl770Jdra2lZUN9XgR0zWRuBU2e+nvc8W+nxelFJ3K6UOKKUODA8P+1AsQWgOzoxm6EzMng91JiKcGc0EVCJBEMJArfqGWljIDh8+zI033jjrs66uLrZs2YLjODzyyCN84Qtf4Ic//OGsY/7+7/+eVatW8cQTT/AXf/EXPProo/Oe/5lnnuE973kPhw8fpru7m2984xsAvPGNb2T//v0cPHiQXbt2cd999y37HpaDHyJrvigwvcjn86K1vldrvVdrvXft2sv2WBSElmVjd5LxrDPrs/Gsw8buZEAlEgQhDNSqbyi3kFlKTf98/6GhZZ9Taz1v0Hjp8zvvvJPVq1df9veHH36Yt7zlLQDs2bOHa6+9dt7z9/f3c/311wNw4403cvLkSQAOHTrEbbfdxjXXXMOXv/xlDh8+vOx7WA5+iKzTwOay3zcBZxf5XBCEKti3p5d0pkA6U6Co9fTP+/b0Bl00QRACpFZ9Qy0sZC94wQs4cODArM/GxsY4deoUtm3T3t4+7/dMJNLSxOPx6Z9t28ZxjPi86667+OQnP8mTTz7Jhz70obonY/VDZH0b+D1vleGLgLTWehDYD1yplOpXSsWAt3jHCoJQBbv6Utx9ez+pZJTBdJZUMsrdt/dLPJYgtDi16htqYSG74447mJqa4otf/CIAruvyx3/8x9x1112Lxki95CUv4Wtf+xoAR44c4cknn6zquuPj4/T19VEoFPjyl7+87PIvlyUD35VSXwFeBqxRSp0GPgREAbTWnwG+B7wGOAZMAe/w/uYopd4LfB+wgc9pretrpxOEJmFXX0pElSAIl1GLvmHfnl7ufegEYCxY41mHdKbAm2/atOxzKqX45je/ybvf/W4+/OEPUywWec1rXsN/+2//ja985SsLfu/d7343b3/727n22mu54YYbuPbaa0mlKr/fD3/4w9xyyy1s3bqVa665hvHx8WXfw3JQlZri6snevXv1XLOiIDQafq/OEQRBWC4DAwPs2rWr8uND0n+5rkuhUCCRSPDss89yxx13cPToUWKxWN3LUmK+ulRKPaq13jv3WNm7UBBqQGl1TioZnbU6R9x8giA0AmGxnk9NTfHyl7+cQqGA1ppPf/rTgQqsahGRJQg1QHJbCYIgrJzOzs7LAuYbCdm7UBBqgOS2EgRBEERkCUINkNxWgiAIgogsQagBkttKEARBEJElCDVAclsJgiAIEvguCDUiLKtzBEEQwoBt21xzzTUUCgUikQhvf/vb+Q//4T9gWf7ae/7wD/+Q//gf/yO7d+9e0Xk6OjqYmJhY0TlEZAmCIAiCUHOSySSPP/44AOfPn+e3f/u3SafT/NVf/ZWv1/nsZz/r6/lWgrgLBUFoSgYG09zz4FE++PWD3PPgUQYG00EXSRAah3OH4Ecfgf/9bvP/uUO+nn7dunXce++9fPKTn0Rrjeu6/Mmf/Ak33XQT1157Lf/wD/8AwI9//GNe9rKX8Vu/9VtcffXV/M7v/M70fob/9m//xg033MA111zD7//+75PL5QB42ctexoEDB3Bdl7vuuos9e/ZwzTXXcM899wDw7LPPsm/fPm688UZuu+02nnrqKQBOnDjBrbfeyk033cRf/MVf+HKfIrIEQVg2YRUypWSw6UxhVjLYsJRPEELNuUPws09AZhS6Npr/f/YJ34XW9u3bKRaLnD9/nvvuu49UKsX+/fvZv38///iP/8iJE2Zrn1/+8pf83d/9HUeOHOH48eP89Kc/JZvNctddd/FP//RPPPnkkziOw6c//elZ53/88cc5c+YMhw4d4sknn+Qd73gHAHfffTef+MQnePTRR/nYxz7Gu9/9bgDe//7380d/9Efs37+f9evX+3KPIrIEQVgWYRYy5clgLaWmf77/0FDQRROE8DPwHUh0Q7IblGX+T3Sbz32mZJV64IEH+OIXv8j111/PLbfcwsjICM888wwAN998M5s2bcKyLK6//npOnjzJ008/TX9/Pzt37gTg7W9/Ow899NCsc2/fvp3jx4/zvve9j/vvv5+uri4mJib42c9+xpve9Cauv/563vnOdzI4OAjAT3/6U9761rcC8La3vc2X+5OYLEEQlkWYs9qfGc3Ql0rM+kySwQpChaRPGQtWOYku87mPHD9+HNu2WbduHVprPvGJT/CqV71q1jE//vGPicfj07/bto3jOFSy7/KqVas4ePAg3//+9/nUpz7F1772Nf7u7/6O7u7u6diwuSilVnRPcxFLliAIyyLMWe0lGawgrIDUZsiOzf4sO2Y+94nh4WHe9a538d73vhelFK961av49Kc/TaFQAODo0aNMTk4u+P2rr76akydPcuzYMQC+9KUv8dKXvnTWMRcuXKBYLPKbv/mbfPjDH+axxx6jq6uL/v5+vv71rwPGknbw4EEAXvziF/PVr34VgC9/+cu+3KeILEEQlkXcVjx0dJgHjpzj58dHuDCRDY2QkWSwgrACdr0OsqMmFksXzf/ZUfP5CshkMlx//fW84AUv4BWveAWvfOUr+dCHPgSYtAu7d+/mhS98IXv27OGd73wnjuMseK5EIsH/+B//gze96U1cc801WJbFu971rlnHnDlzhpe97GVcf/313HXXXXzkIx8BjIC67777uO6663jBC17At771LQA+/vGP86lPfYqbbrqJdNqfsAdVicmt3uzdu1c38oaQgtDsDAym+Zv7n+b5kSk64jYamMi59K9p54Ov2hm4u7BUxvsPDXFmNMPG7iT79vSGolyCEAQDAwPs2rWr8i+cO2RisNKnjAVr1+tg/Z7aFbCBmK8ulVKPaq33zj1WYrIEQaia+w8NsbWnnb5UgmPDk0xkHToTEXq74qERMpIMVhBWwPo9Iqp8QESWIAhVUwost1SUtZ0mwLyoNYPpbMAlEwRBCA8isgRBqJqN3UnSmcL0ikKQwHJBEJZHJu8wlnXIO0ViEYuuRIRkrDnkiQS+C4JQNRJYLgiNRxhjsDN5hwsTedyiJmpbuEXNhYk8mfzCQe9BUm0disgSBKFqdvWluPv2flLJKIPpLKlklLtv75cYKEEIKYlEgpGRkdAJrbGsg20pbEuhFNM/j2XDJ7K01oyMjJBIJJY+2KM57HGCINQdCSwXhMZh06ZNnD59muHh4aCLMotLk3ls6/IEoG5Rc7E9FkCJFieRSLBp06aKjxeRJQhLIKkABEFodKLRKP39/UEX4zLuefDoZfGdpd8/sHdngCXzB3EXCsIihHl/PkEQhEan2eM7RWQJwiLIRsOCIAi1o9njO8VdKAiLIBsNC4Ig1JZmju8UkSUIixB0PiiJBxMEQWhcxF0oCIsQZLxAo8WDDQymuefBo3zw6we558GjoS2nIAhCvRCRJQiLEGS8QCPFgzWaIBQEQagH4i4UhCUIKl6gkeLBygUhMP3//YeGxL0pCELLIiJLaDkaJc4p6HiwamgkQSgIglAvxF0otBSN5NZqpPwxG7uTjM/ZBiOsglAIBxLDJ7QCIrKElqKR4pwaKX/MQoJwZ2+7DKTCZTTSZEcQVoK4C4WWotHcWo2SP6YkCMvdsDdt6+YHA8OkktFZA2lYhaJQPySGT2gVKhJZSql9wMcBG/is1vqjc/6+CvgccAWQBX5fa33I+9tJYBxwAUdrvde30gtClTRSnFOjMVcQ3vPgURlIhXlptMmOICyXJUWWUsoGPgXcCZwG9iulvq21PlJ22H8CHtda/4ZS6mrv+DvK/v5yrfUFH8stCMti355e7n3oBGA69fGsQzpT4M03Vb6rerPj18KAMA2kjbLYIaz4XX8y2RFahUpism4Gjmmtj2ut88BXgdfPOWY38G8AWuungG1KqfBF5wotTyPFOQWBn7EyYQmGl/iflVGL+mukRR2CsBIqcRduBE6V/X4auGXOMQeBNwIPK6VuBrYCm4AhQAMPKKU08A9a63tXXGphWchs3tAocU5B4GesTFishhL/szJqUX/zxfC9+aZN8jyEpqMSkaXm+UzP+f2jwMeVUo8DTwK/BEpT2Bdrrc8qpdYBDyqlntJaP3TZRZS6G7gbYMuWLRUWX6iU0mxUgpCFxfDTxReWgTRMbstGpFb1J5MdoRWoRGSdBjaX/b4JOFt+gNZ6DHgHgFJKASe8f2itz3r/n1dKfRPjfrxMZHkWrnsB9u7dO1fECStEZvNCJfgdKxOGgVTif1aG1J8gLJ9KYrL2A1cqpfqVUjHgLcC3yw9QSnV7fwP4Q+AhrfWYUqpdKdXpHdMOvBI45F/xhUo5M5qhMzFbUwcZhCy5k8JJM8bKNOM91ROpP2E5SD9vUFovbTRSSr0G+DtMCofPaa3/Win1LgCt9WeUUrcCX8SkaTgC/IHW+pJSajvwTe80EeB/aa3/eqnr7d27Vx84cGA591MXGjG26Z4Hj142Gy39/oE7d9atHOVuy/I4nWrdlo34DBqFZqzb8nuK2QoF5FzdNPdXa5qxTQi1w69+vpFQSj06X4qqikRWvQmzyGrUxhOWcvsh9sJyL0LjIW1HEPxhMeEdlkl9PVlIZMm2OlXSSNuylBOW1AV+uC0b9RkIwSNtRxBWzlJpPcIUnhI0sq1OlTTySqVmCUJu5GcgBIu0HUFYOUstpJLFEjOIJatKwpJgsVHxI4hWnoGwXKTtLIwEKguVspSlShZLzCAiq0rC1ngarWP0w20ZtmcgNA7SduanmqzujdbnCP6z1GQlLOEpYUAC35dBWFbatHIQb1iegdB4SNu5nEoDlVu5zxFmCFM7CMv7vFDgu8RkLYMwxDZBaycYDcszEBqPMLWdsAwQlcaqtXKfI8wQlt0cGmEnExFZDYwE8QpC4xKmAaLSQGXpc4QSYZisNILoF5HVwMgKDkFoXMI0QFS6mXdQfc5yLX5hsRQKtaERRL8EvjcwKwnileDV1kOeebgIUy6hSgOVg1g4UE1Qvh/fExqHRlgtLCKrgVnuCg7pfFoPeebhI2wDxK6+FB+4cycfe9N1fODOnfP2I0GsGltuAllJPNv8NMJqYXEXNjDLNYWHyU0h1Ad55uGjUhdd2Kh3LM5yXUKN4EoSVkZYAvAXQ0RWg7KSoFnpfFoPeebhoxEGiGqoVfxTtXFgpXIcPpvmmaFx9mzsYk1HYsnv1ZNmjhWr972FIQB/MURkNSgrsUxIwHzrIc88nANb2AeISqnlSslqLH7l5bhuU4r9Jy7xyLMXuWX7KuKRSCgshbWoq7C07TCtmA0LEpMVQioJUF5J0Gwj+LEFf2n1Zy4xabWllvFP1cSBlZejtyvJLdtX05mIcPDUWGiyjvtdV2Fq2xIHdzliyVqEIGYHlc4EVmKZaDY3hbA0rf7MJSatttTaHV2pxW9uOdZ2Jrh9Z5zBdHZW5vog8buuwtS2a9oOzh2Cge9A+hSkNsOu15nP5362fo85dv99cHq/OWbTTXDTH5i/1RkRWQsQlNmz0hdmpUGzzeKmECpnoWc+MJjmS488xy9PjaJQ3LA5xe/eurWp2ofEpC3OSieUlU76aj1xbQS3uN9lDFPbrln9nzsEP/sEJLqhayNcOAb/9DZwc9CxHtZfA5lR+Lf/CpGEEVdOFtrXQbQNTv4Exs7CHX9Rd6ElImsBgpodVPrCtLplQvCHgcE0f3P/0zw/MkVH3EYDjxy/yLmxHB981fzL+BuRoAffsMTMzIcfE8pKJn31mLg2wopNv8u44rY9n4XIEyIDg2n2//xhes8+wEZ1gXWbd7DupjfNWIvmfG/fns3+1/+5Q/CvfwqTF4yAKmRg4rwRWNF2yE/BU9/1/jYJWGBHQNkwNQKpBMS7YHLYlFdEVjio1exgqc62mhdGrFHCSrn/0BAXJ/N0JCIkojYASikuTOSaypUW5OAb9mBgPyaUlUz6ajFxna8/DXzyuYhoAf8nyOVtu985wa7TX6Nv8jBrOmKQfdHlbrLy8uUmYOgQWBFo6wEnbyxGv/I+BvRmvvP9H/DKsa/hxlJc0GsYOX6K2Nj/S/d1vw5H/3XasjQyMsTQN/6a73X+FsmOKyk4LoNp5/J7K7+2HTefubnLXX1zyzc5DFYcinlwchDrMN/LjAIuqIgRVGhjwYrEjbCaFlqbITtmzllnRGQtQC1mvpV0to0wExPCT6WWkzOjGfJOcdYiinjEYixbqKm7IYhl3kENvmGKmZkPvyaUS036/J64LtafBhZ/NdetlRmdFi1zhdaSz34pQQIw8B12pU/x521r+flYL9vPfpu+4lmSnd0ko/aMm+y6t8LwAAw+AennYe0uiLWbvxddWLXNiJfzR2Ddbhj4Dvc7v8lN2YcpxlPkI12syo/QkzlE9MQQHP8uxDsg2c1krIfnxxKsKQ7ztsmPcKTrNvYnXsLrXvWK2eJq/31w/EdgJ6DowOQQFIGuPjjxMPz8M0YcOTnzWc+V8NzDpnyRJOTGQGtAm3pQNqgCuAWIRMHNGiFmRcB1jKhKpMz5nJw5d2qzv8+7AkRkLcBSYmc5g0Qlna24AYWVUo3lZGN3kmeGxsk5xWlLVs4pEo/YNXGlleK/Hj42wqq2KLs3dNbNshOU5TdMMTPzUS9Xqm/X8cSHO3CIX7fWcSr2CkbUlUuL14UsTEtYnqpi4DtGYCW7ze+l/we+M/P/4BOQSxsBsP7a+cthx404WrUNrKgRQ2DE0elvwc8+CUpBahNsvoV12dP8+pkvg5uHWBtEFWgXpi7CpeeMuOnsM642JwfjQ9C2GlBGwGQuQvcW43p7/hF4/me8rvCvrHXPMRbfwFR0FWsmj5J0xnFcDeSNiCk65MazXOWMMhlbh8ait3Cat43+NRNf+zxc+yumzEf/FS48Y+5rcshcx45DMQuXjpuf3TzkxyCWgokhGB80oiqSBDRGkVmgi+bYSBIsywgq7bkJ0RDrNIIMbf6Pp8z/q6+YEad1RGmt637Rpdi7d68+cOBA0MVYUEiVD2LlAmy+QaL8HEfOjnHd5i7Wdc50KkWtGUxn+dibrqv37QlNyj0PHr1sMCv9PneGP19M1kTOpX9Nu+8xWaX35vjwhOk8lSLnFLlxazdR2563fM1ANc8jCKrpzwK/Tpml6IHjU/REciTdcQ5s+F0Adoz8kMjEGW6+7rrZYqncwpTogpHjxrKTXAXZUSMEVvcb4XDphLFCjZ+bXwzNLU+5cLr0nBEr7Wth6oIRM24WCnnoXAcdfTB+Bgo5yKbBjhqrTtdG0I75uzMJ558270j/7TA1DIWsESYTg6AsI5YAoknjKtMFyE0aAZJIGeuPdo2Vp5gHbRlBgobEKvN/fgzi3Uas6aIRI6WyReOMWGtI5C+hLEW0mEWjyFlJojpHAseIP2WRKTjmfGhyxIlaCktp8sUIqVQ3jJ818VKWbb5jWcbCV3TN/Ts5UwY7Zlx90TbjDsyOGqtUrN2UDwX5Cc8qFYPurSY2q5AxdRdtB4WpD5T5LDduhOq222q+ulAp9ajWeu/cz8WStQgLzXwrNf/PtSg8MzTOL45f4tYrVOgyEAvNQzWWk119Kf5031WzVhfeun11TVYXlt6bgqvpiNsopQA4dn6Sm/tXh8ay4zdhDwGol/V8xdcpD4BuX0Ov3cslukkWL/HKZ/4rcXecCauLqcR6eOZBeOKfjDhq6zGrzewY9F1nvn/hKSNcRg8at9P4kBEkaHOs+4gZyBPdMHUJnIIRU6u2mtVsAMNHYeRp8/2iY44tZGH0eRg6bARcfsIILGcKnAyMPGs+LxbMd5wpIGLijuyosfZ0bTCiopA1FqBYu7Gw5ceNwEh2GzGiNaCMFSoSM+6wwiTkJ41oKXpCCE9gWRFzXWcKIm3guua7KmK+nztthI9SYMdJuWkKuoBd1GjA0g5xdxLbUtMxUW4hSxSXPFEiOCTRUIQ8CdoZg7FJU1duwbj4iq65fytirFE6aoSRLhqdpmyvbjyB6BSMpSreDp0bYDQLiThsfQmMnTH3nOw2lrBoAvIZI26TKROT1XcdvO4eH1tx9YjIWgaVDmJzxdgLNnTxi+MXOXRmjNt3xkPX2QrNQbVumV19Kf7bG6+teblK701HIkKu4JKI2tPxX8082WiEEICqXalLudgWyFO0q2/P8lx5Jx42gqYwZawvTp7d2aeZzBVJMomtXSbtbuIqTZ97BvRq4yJ6+l9NDJCFEROjz3tuMstYntw8tK0xwuTo98xAb9tQ1GYAz6aNUBk9CVYM0mcBz12li57Lq2AsNZMXjPDJXjTHTg6b7xZzRuRobb4zcd4Ig5Klycacs+gYkTF21ggdpUArY6kZftocjzYCBMvck5s3n2lthFLpd9cx11KeuEKbn7GMeHML5vPSMU7WnF9FjViJtRPJjKIiFlnXpqgdkhTQRIxFKpoAZVEs5FGYyZJDDIWmCMSZwipdu+iY+4u2m/rMT3grAZWpOytqyqNdY5lzsubZKE8cKsucIzdmBPP6a43o6r1zxv1XivdKroYtrzXnz44a61XAiMhaBpUOYvMlxrupfxUHT6cZTGdD0dmGeWl5q7LSZxJWy0npvdmxtp3Hnh8FQGtNzLaWVb5Gart1jwdbKBkjLB1/VImAmpuz6F/uNlae9dca19vB/wUXj0O80wiXZx6EE//XxAWhZ7vgLhyDn/x3T3DE4eTP4BefMbE1kRis2m4sT8Wi+Zcdg2KeqBWjiwyutoAiERw69CS2jsDkeYzLSBuR4ziemwwjmOLd5u+RuBnUi3lPDFhQ9KwpShlBM3XeiJ9ozFhJLE9olI6n6IkUPFEQ8Vx6U0Y0xDuNBapYMNa04qT3u+OVEc/l55r7d7LGqlWK5HEL5nzaBRXz3Ghxk6YgP4XnIzPHdG81rripC6b88U4jPMZOmevZEeM61J6IjCRMkPnF4+az1CYjgjxhpIouObuTvNWG7VxAo3Ach3g+QwSNo2JkIqtIuGlcrVG6iI2LTRHLjnrCDvO/HfVirwomYL2zzwgnN2/Kobx7iCSM1S8SN8fE2ozQbF8Dr/6b+V1+r7tndrtNrocXvi2Q5KNzkZisZVBpbIHEYgjV4tczCaMAKb+3bMFhYHCcS1MFbtvRU7V7st5tt9b16ev5zx0ySRnLRU5+HNrWmnikVdvM/9kxM2CXr3wrCSjXgYmzMDliRMXtfwp73mCO+dFHzECe7IbzA/D8z4xbx44Z19b4WXPNRKcZtLU2A1+xaAb5jvXGgtK1ES4+ayw+kYQRbRNDXlxOuxE+VsSz6GhzL4WMZ+XwrDDaMYJD4Qkf13OT2YCaiftxC+bakYSxpqDN9zrWGRFV1OZcWnuxRmrmHIVJUx6tZ1awFXOe1Stmrqddc25dnBEThYz5vK3HCzjPGAtXfsKz0tiedco2YrIw6d2X47nwEsbFhjaur3zGs4YVjABtWwPpk6YcsaSp1+Qq81ydDLT3mniueCdMXDTP046aa7WvN4Jw8y2mDk4+BKNnzDNzXfO93AR5t8jF+CZs2+JiYgurMidJFEYp2B30rF7NyKVLTKk2ppJ9rJ84QrQwTgQHgFgkYurfsqBrk4mPcvOmTWy80dxbadXk+Dnj/itMmjbXvcUc07HO/F0Xzd/f8PfLeyfqgMRk+Uil5v+wWhRKhH1peSvi1zMJYw618vdmIufwsqvWLVtM1LPt1jrP1dzzx0cGeO4bn2L96ilW9W1fehXc3FVpZx+D0VNmMI21m39KeQHdG2DD9ebC8618e+q7RmAV80b02HGzyuv/vN9Yom76A3Odro3G7fX8z2bExtRFI9rAiIfcuAkEj8TM3wtpIyySKZi8COce9xaNldxkp813LU9oFAvm727W/N2OGstQftwc40wZMRJvZ9r9Z5UG9hhQ9AQaxiqiMUKlZBWyo56wsQFP7NiWcYWhjAsRL+7JihjLlB3z7g/z/VI8EZh6syxI9phYp7Y1pu7yU+bz9l4jsBIpI4LiXTPuSDsK0XWQGTH3YtnmWY2fNdYpK2LKteYqOHPAuD0jUbjyVTN5o8pF8a/+F1izY8aameyEja++PD6tJGI6NhhxtuZqc57CFLgOGRTFSIKh9qtw7RiunWB/3+/wpLuZj73pOtKHfs6FB/6WopUik7qFjWOPo5wsHe0dMDVo6qa9z5QPbVb4LZV1vVzEl8iOBZJ+wQ9EZC2TSgaxsMdihH1peSvS7M/EL/FXz3qqtaArP3/PxDPsHfkqY7Tz1FQXt5ZvFXLuCeP6mbOFSO7044zoDs7rHjYXnyPlXCRiRyg4Lvnh57hor4VYO335KSJOzoijC0+bYO/cmBFDP/+MGdRyaSNEwIgGZ8oM+IWciW86/iMzQKvHTJLH3ISxlOSnwFJlMTgY8eIWjKDANlYMK2LES37cWLYsz51kmbge41JLGOFAEZS3qkwXTTmLnkvNigKuES6FSc/SlfJikjJG2LWt8dxkBYh2eRayJHSuN+XKjRoLHApSG734JGUEWvYS2J7QS3R6bsBOU6ZSYHkkDm4RbD0T/N6+BlIboO9aSJ82YtHNmRVzXX1GnFo27Hy1Wd1YijWLtpm/RV9grHtuzpS1e+uMda4kirb8Clz1Gnj5n5s6K4nsaBy23T7bvTtf0HfJWmnHzD1nx4yV77Y/MWUqO8+3HnmOzUM/YG3xPFORNRxa93pO2NvY2Gnege17XgT8MUO/+Gfy46c5230jm1e3kYhr85ymRoxFtViofIXfrteZ8sFsi+sL31b5SxUiRGTVmDBaFEoEvdWIcDnyTCqjnvW0bEG3UDLJOT/f/OwF1nKJZHGStvwIuUgHVrSXyMhRGBsx1gldhLZVoC8aaxMW5MZwtUuGTmKWwy73WVwVoaBdtFtgUtlYyqZLj5HJFSjk8+iLzxGdHDLur8ylmeXvREzANRgBgWWW8ye6zQCJY8SFm4PMmBEdkZixCpWsV5Y9E4NTCqouBYhbkZl/6TPm83inERDRNs+a5cUKlQdKO3nPimWbMjpZbxXfFPReZ9IQKNtYhOLtEFsL/b8DJ/+vEVJdm018lpszlp/2XnN//beZcl54yljboomZBJ3nnjTWs6teA/0vNSv8XAdGjsKlk8Zd2NVnylKYgrXXwpqdM3mtSsIgmoRf///MdeaNcXsDvJzLLZR3/uXMd6aTh+42Ai4zerngWL9nQeEyvxt6j3ERl19zOn7pDbO+f9OLNnPvQxsvc8uXe2O273mRJ7Z8Yv1i5Ws8JCarQsIY47JSJCYrfNQzZ1EjtudSuQ+fTXP6UoarejvY0tNeXT1VmXxyWbGV5cHhThae+6lZ1RVJzGS6Tq6C3CUyeYdspJOiFaMrP4SrLSyKZCLdpBg3IqVYgKi3lYgVAzcDysZ18+RoI6pM+gGXKI6KEC+OU7DacKwkUWcKZSlyKkFUF2iLRYx1abrv91anWZGZmB8raoSQncBYlCIYl5oX5xRJQGHCCA5d9GKvrdkxOFMjRvwoZbKDx1OzUxpEk0YgxTuNO2lyaLaAi7YbEWhZJgZJaeOmu+F3jSAqZTCvJLEnzO8mK7mldr1u4TZRyVYwy2hXFbPM8zZzfGcYWSgmS0RWBTSzGJEX6HKCrpN6BFkH1p5XMGB86ZHnOPv0o7zK+neuTFzivFrHt3M34vbu5rbO8+yL/Dvr3OHZwbRzB2CYHdg9esazRlwF214yb3kGBtN85/s/4Kbsw2zMPkO0MM64amf9VTeZzXLh8nsa+I4ZwN08HHsQMmlvVRVeXNGkl1tpFW5+EtctULDaiOg8li5QxCaqiliWbQROMW+uY0VnAq3tBAUnhwJcFcHSrkkYGU2RL+SIRSJYuETdDHm7jVyki3h+lI6kF/ytXeN+LGRMHUSSnmDyXF/FvLlexMvGHWs35bYipk6zY8a1lOwxde3mZxJrJlcZl2BhCnbcaQTYhaeN1Shz0bgK4x2epay0dD9jnhOYrONFF7o3w4YXGlFUEkQlN9ly2l55QtL5Av+biLAvvFoJQffR8yEiawU0c2MVZhOkAPG741jofIG157nWnXNPmgG3lDBynn3ZSJ/ivL2Wz49cy+lLU7wh8y9MqA7GdZJtXS7txQme73kpv548ONulUwSSXUZwZdNmQC8tIy9kPUtK+4xlRRe8Ad8xgmvNzpl4kswlnNwEk24EVXQoRLvoiFnEbWVWxillyp9Iee6ctCdQYibWqFj0rFFefE7EC6wuZbfWLsVCloKKk1UJOoppsOPYxTzTQdDRNhNDZJdWnJnPp3SMeHECR8WwtINWNgUVZ5C1dEUcxts2s2bqGaaiPeSI0pM/S6ftBX3nxrzElvmZFXuWbQKyo0lj1cpcMj+XRFgubcSWFTXHRhLmvt28SRNRqjMwv4OxHpWCmE/+xAjOZMoEcV94ejq56Kzl+bUSRLWyNoWQD379IH2pBJaX9Bcae4cRX6zYNURWF66AamMywqiy60Vo773Cfcv2j15LKrmtomz+fgsiP1ewLXa+wILrS/u6uXmzQsqOG3fTyZ8YkbJ2F5x/EB77ohnYV20HZ5Lo4A95T+GzFHWRIjbDkV6esa9kYlLRb52i/9m/gdXrjbDJTxlBkk3DxBBOtJ2sa+Fm08Qsh5jOYSe7jdtpYshbLeZ4gdBpI2LOPWlyNxUmjZVm6gKRYpGUUiZnjx6DTAGj5DBL3sfOmoByZXlxSI4J2lbefmtoL39SKQA8PpPdWkWwlEXchngiAbn89LZDgFmer2xTNl0054q1gWUR1TaFbAzlJZW8FF1PTsVZF3UYcru5ZK8hGb1EsVjEAeyuXpg6awLL7ZipL2VBcq23ss2GjnWk2/s5M5bn39tv4QbnIC+49G9EtGvcgJkR8/2OXlOONVcuLH5KYgmMWJq8YO5lzVXGOtWxbmZ5fvn3axSXM6A3c7/zm5wpZNjoJNmne9m1ojOWnbvOfd9S12um+M7y/mwsUwDg6aEJOhKR6d1TwroqvrVFVoWzmmoaa62Xe1fMfHEE5e6T0tYQ88UWVHPe0sy1kGHKSlLIdnF9x1WsXncHJzL9wdz7fGUuzYqt6OwtN5ycCVbt2giZUXad/AJ66+9xkRmLzlwBUotnfP+hIa7Uz3HD8E/ozA0yHu/jl+23cf+hNnPOKje3XWxFXM0636ViV0pL/5/76cw2GBNDmESKETj1CCTXeALpvFmd1dZDND9OjBwKlwnaWe+codc5Y1bPWzESxSmTngBMLE+8C5SiWHRxcjmcaBdt+hLFog3aoTh1EatttTm+kPFyMXkbz8baTJvWrrHcZC+a8llRb1sQL5dSMT8T6K2LXr4k0/ljx0z4ki6Y5JGlLN1Ke3uypYGCOb+bN+eYDvouQPs6LwXAamPtiqfMdxIpz7V5vQn4LuSIZtPoZAo3N8Wzyd2kV+1hZ3eRLivDhZ3voO2hT3Ay0s+OwlOsbo/RluwC5cDEOei9xqzYK0yasmy5Gdp6uDQ+wS8utnF8za+SWX0138zeyaPWdbw19xWSljZCq+gY917frYuvGJsrltrXmO1RSjFRsPDy/EUCupdDLfvmevf7lVwv7CmEqqG8P5vIuXQlIuScIsfOT7KmIxHqFdgVuQuVUvuAj2M2APis1vqjc/6+CvgccAWQBX5fa32oku/OR03dheUbeqafn70xaHbULK098X9nZUo+3v9mPnE4sbQL6dwhHvnu5+lOD9DBFFm7gwsdV/HL9tvI9eziA9fkFx4oS/lMChnj2ujaUJ0QmnsOtIlliLWXBd3GTGea9zYSjcRg64tntiD4lfeZc5Xqp5QcLpKE1du96zxhZtRFx/y96Jil0m6WTK7ApJ1irG0zHflh0okNnI7v4FTvK/i933jt/M9hsazSVYiKRZ93ab+zSMLLU9NtBrTxQVPX20orjZ7mwvkzjFvdPLnhzazNHqczN8iUYxOL2lzflwQ7zuOnR9GFLNn2jTyz+uWMdFw5426b7xnDktm3f3pynF4uMpbciO3mWDv1DMlCmpPRK7hhc/fs5fuRhBEVc5f15yZMMPCqrfx0KEJ7LEKEPK6KmbQ+xTxjBYtdfV08c3aEqWQfz6+7gxOR/qrM7fPOoNWpywO9wbxfF56Z2di2o9db6r7WtMMLR81xdsRYhOLt5j6mt/1wyGsbjYWtc+SxsVDYOBSwiGARwcGyo7haoYsFpqwOYuSJFPO4RHDsJAl3HJcIRSBKAduKmGs6XnJJPKFkx8xEpOgJLjdvBKEuetYfT5A53rL8UoJK28tSDd42LpZ3D158kxWDSMQkvUSZ6+miecftqBGVuEYgdm00rszxsya2qTxD+kIB36XP574XpZxDbt645rJjM8HfC+zptpA7ebt7kt/rfmJlrrYA46Jq6Savtwu+0uuF1rNQJeWuz0eOj5AruMQjFuM5h1fuXh+K8J1lx2QppWzgKHAncBrYD7xVa32k7Jj/Dkxorf9KKXU18Cmt9R2VfHc+aiayyrMZn/45ZCdMB7f1xbDuauMiGPyl6UTjnZCbMtmAo0kubnw5/yf2Gp5wNnFt5DSvzX+XnotPGEFT2kIhN8GQ20bEtnHtBEoXudC+g2hhknHX5obo87MHypKoK21BoWyz3LjomhmvFTFCaO0uI2gyF2H7y2dmjuWC8cLT5r7ae0xwaX7cDA6lrQ3yk6bD79kBo6e9gSFurtHVZ+6jWMTsy+WYspWWXtsJz5Wgzcaiipmd07U2rpFEN6M5iBUzRHBxrSh5q40Lye0kcufZuO2qy4OPSwPy878wg3Cs05S/tAN7aUl1+d8jMSMeV/fDyPFpUTFrZVGJQ//bbNcx+rz5rpPzkuOtMc9r8jwkVpvOPhIDO86ka5EbfpYEeXKRLnJFm073IvGIRaRzPbh5zmU0o21X0OWcpz07TD7ShoWm4Lis74rPlC87ZsRQdnwm83KpTSnby75tXGKTZw6ji5rhjqtpdy7iWHFimYt0FS8SU9oMvh3rTJ337IDzR4wY6eozeY3GB2eyTie6GcnkKbqai+1XsCZ7HDRctNawMXeMNrtIpnMrg04n8ex5nFiKno4oHV09l9fjHFF7fO3L551w/HnbN1lnZ03szcmfGFGfn5oRV8oysU9u9vJ2FOvw8ia55vuF7CzhUkSR18boHiFPgQgRHJPk24piRRMU85MUtI2Fi1Y2jraxyKOwUMrb+kRDIdJO0XHptAueqw5TFs9tZwLMlbeFibF8TacS0EVvX7uiOS6emhFZGvOd0iq9eEeZO9A2LrXODTPtdb4JFPgfL7QMUVPzWJ6A4qJqeV/1jn9qtnirpSgXlcPj2eltuboSEXZvSIU6JqsSkXUr8Jda61d5v/85gNb6I2XHfBf4iNb6Ye/3Z4FfAbYv9d35qJnI+tFHjJC68BSMDXrbFuRNR7hqmxEyuQnzsx0zM0mnMNNRKsustMlNmszAidVG+DgZQEG0nXx+Cpco6bZNaGUTLUySLFwiqrPE2ld5lqQJbwn0lLEUobxgUu8aTt4EpVq26eApmm0QspfM7DiRgtRWs6VCcrVnVTprBqn2NZB+zuxPhZ4ZPKxS5uOEt/O75WUcHjWDXFsPjD5nYmEiCXP90v5Wpe0eSnttWbY5t7fCCScD0TbGi1GSziiaCFPRVcScCbRSZKKr6enuNoIvc9FLZujN9KcueHEmyhNu3sBmx7w4lLjndrHMs6FoPuvsm3HplM41MUjObucinYwX42woPE+0rZs4BXPu3Jh3PjNwurkJnGKRiM6TjaSw29eQyF+imLmEQ4QcCeIqRwSNleiaTnqYLSoURSaja0gWRolQIK9MjE17RJtn0LvH3Nv5p2YG0vI2VUqg6GV2Lkxews1PEcUha3cxYadI5c8RVRrbts3zsqNeMscJM9g7OdMGdcEIk1L7zI7iRNuZKihiFHCtGEVtBLCV6CIaiRgB5OY8AaS8VWbenmle8PdI21YuDT7PoLWOSFs3u+IXyJ89zITVSdRWFDXE3Sksd4quwgiJZLsZyKdGjHstP27acnIV0xm5I94GsKXElB19UBg35dHFmezX08LFbJ1SVFEyVhsRx2TojpI3A0xyNdgxMmMXsZUROY6KM5FYh50ZJoImYTnkVZKozuNiMZ7oY32bMi6z7m0mH1Qp11JpSxXXS0RpldqfbfIsRZLexMrbwLd9HeSzZqViaUNc5SXl7FjvvesxE0w/30SgHtQjZUUD0IqWrGZh7oKk5y5McnRogs09SXb3pUJhoVtJ4PtG4FTZ76eBW+YccxB4I/CwUupmYCuwqcLv1o/0KW//prhxBZREQ37KxIYUXXPcxPDsGatjctAYi9CYibPQRdNJq1K8hgl2tS1F0XVIZs9jKWhzLlEghm1pM+BkLhnXQW7MXMsteCt9xs01ou1m8NNF0J47o5Azx9px83P+jFlBlVxtBqLxs175okYoWlEzgDve9yxvRh2Je0uzi2az08KUl1BQmU1TtWfFcr0d0LG8ZIXauElKSQKVF39S2lXem7G3UUQDjopgUUThooqa7sI5uDA0syFoZtSUMd7hWZd02T5eynOvRM3+YPnxmUG6mJ/Jy5M+xfQ+Y04GYm0UXAXZYbq5SA8uFi7u2CS5jl7ipTw+jrE8OoU8eRciaDSKiDOJlZ7EtRS2HSWmbGLuhDfoettvuDmw4sRwKGhFe2HE7DqvoWDF6WQc3IjZ0mR80AzATsbU4cWTps2BuY+SsETB2FmiSmHZFrhgu1lWFbPYlsaOeLFNTtb7jreZrY6aZ19qR8prS0Vz3ojr0K5M+80VE8RVliiOuUax6OU4ipk2r4tmlZwV8wR4BPfUAZLFR+nAZU2sh4mpTnLuFMVikV5GyEY66MhdQFvKaCMKJhg8P2XKQSlwW5lJiTJpBiZ0AqUVMcvCjncQdTNm4C9kjAVWO7Bqh1mBNjHotQuFZcdotzCZu4sFiPcYAeMlr8zZSVw7iWvH0crmeM9L+Xn8Vg6eGuNDkc/T4Y6SxojNtUnbBJO/4I2zN5b95f80dRlNzORoyl6CPLDmCuPC94TS8QsTjP/kH+gZfYKoHSOx5RWketbP3oPNjsCVd1aW5bqWVBnb1EyxPOXU8r7qXWfN+owWYu7uKf1rO/ijl1+xoLAKk5u0EpGl5vlsrvnro8DHlVKPA08CvwScCr9rLqLU3cDdAFu2bKmgWMsgtRlOHzBWm+RqI07ynsswN2k672LRszB5s+pSCAXKHOe45tZU3LME4CXsA4oFbDsKbga7OIGrLTQWUUth43oDvO2JKNdz1xVnZvDFgimP5bn4bNsLmFXewGVBMTsz285NGBFS2nZCeXEj8ZSxSqDNwKmLJhbEiniiCa8cGYh4uW9KCQYpzsShqHK3Sak+vFVVWgOleBMz27d1HteKoFUE5WSxcbHsiLcUPWKER8lyopSxotlRc37Hs6pYFhSVtzrLyx5dEmLK9mJdHC9hYtxzPwFOnqJnYbKVms4ZBKAmh2H1FtDKuO2ibWR0xFgjtYOlbaI6h0PU05Oe+MALRrYwQtu7vlUsEokkcd0ClnZwVJz2KNi5gnfOohHU44Pm2VgR8yyyozN7qCnP0mh5QtqOYgNYNrbC/K1Y9I7XXtthph0oNZOCwIrNBGRP72KfxbbjQIRUpGAWwmnbtO3S9a3ITJsstUu0eaxFhxhFNBHaCheJqQnsYm76dYhZFiiNKn2glfccs979Yspkx0Brim6BCdWFwkHZNhk6SRdX0Zu0SF71anP8qQMwdNCcI7XBuNhKcUmlAG3t1c2GF5p28dzDkM+SjW9gKLaFaDTKgQ2/Ox0nt+Eql5+odew6+QXstm429/WSjOTNsyjFxZWLkLl7ps2Tm2lgMM29h0+Q2vhBOq8oi9Hc2/h58yD824EtxFIDa/l9HT6bZizrkEpGuP/QEMeHJzg6NLnsQdmPOqtGGDTqM6qEheqh0t1TQrP4zMMXd+Gc4xVwArgWeEE13y1R05isf7kbUJ5b4xJc8mKhFN6qnkueO6MwY/ovWbHwLEKl2BenNCh5A6GlzICXH/f21vK+V3K75SfMsW7OlMGKGvdcbmxmz6/pOKiYmcWXroEnTLSXfblUDjtu/j4dZOvlwCmthookvPNFTFzS+Dlz3KptxhKXHZs5dyQx47ZRzMRb2e3GqlTKiTN53vyte6spc/aSOXd5PEvREwZFd8aKpvEEnCcSHW/jVyviWYmi5t500XNv6pntNsAEGheyngtUzXzPjgE2jpNFoyiqKLbOo1FoZYPWxLrWmbiUsdPQ2cfkyGkcu41MbBV2MU939jRZu5OoM0kinpi2eE1v+lp0INZlLD1eEslpK1Wb52rTrrnHYmnFmOdWtWPm+bj5mXJbMSMUNZ6gjJj6nQ6k9oKkowmmN9F1C+Y5xFOeuI+bNmx5LmbbNs8B7WXajhjrWX7SE+0xr86ZqWfteM8gOiO4rAgFJ4+iiKviWLqAhcYlgoWDQxRLmfQFWiu0UkQV2IkuE7unIiYPUr6UVdyh4LhkrQ5sVSQbSTHcvoPVk89SiHaw4YWvnb3wZL4A7rnv8ZxVjHNXxF22OKUSl1mF8UthdNUsZ+Yeptn+Sqkmv918rqdfnhrlhVu6A8u71MwJr6thpfUwMJjmQ98+wshEjjUdcXasa2dNR6Iu7+dK3IX7gSuVUv3AGeAtwG/POXk3MKW1zgN/CDyktR5TSi353bqyfg/c/qcmGHpqxFi01BVGbHT0msEykTJLx3PjZgCKpbwVR2NmEI16MSWz9toqmAEy2WPciVbEdNJFz+pQiiMqlFw+3sBbSupn95jzFabM+eIdZvZccllcOmkG0EjcDKalDMn5CXNfWptyF13zz/XSEvRcaQYsmFlFeOkEoMzfnSwc/hczsLatMQOkFYVYwljJIjHvmjmzS3si5VldNhq3Sbz98pV/pYUFJ/8vZkGpYwK+HU9YUjT3rbVnoSkYC1y00wiIYsEIg8QqI3hL+YKibeZ/Owq4xopVdDyLm7EeKTRFZQNQxAjkAlFsq2ieXyIFL/ljOH+YdMai6LrYXqxdOr6BWCFN0YpBJEoulsKZGiWqHdyiTSTWRhRtYnISqZn4nahnZSzmvXsoWfqKRihZUejeYtpU3nPHRtvMZyWXWCnhZNcGpgPbh496Lsde8xzSp704ny0mhq7omBVpMa9eSnGEY2dNGRKpmfaZXGV+nzhnnoUVMZZb3JmJhesJ5JK4VpYXPF40H6E9qa+x4+24hSkixRyuihO1LWzLi9WLJM2Gup0bjEBccxU89wjZC6eJKIeJ2FrOdl6Ha8ew3TxDajUbxs4sun/avO/xHIG0Ctg6mGbg0BCD883sK3GZVZibKWybeC9n5h622f5KqWYT77nHnhvP0R6PcG4sx7Y1Hb5vAO53+ZuZldRDqU1fnMizui1KtuDy6HOj3Li1m9Xt8cDezyVFltbaUUq9F/g+ZtT8nNb6sFLqXd7fPwPsAr6olHKBI8AfLPbd2txKhex5A6zZMXsm/Mz3vS0lPPdN53ojHC4cM1mWs+MzMTHKMsG6mYuANrPeaBIomnPs+FVzHTtmBq7T/26WpmcvGcGilMlzMzkEUxeNKOpYbwTd6pvgureaDUnLZ9ODB431KDPqxVV5Lrx4yggz9Mz2E951z9PF+VPHSLu7aI9H2Doxxaq+9fDC/2LKV7r/1duNALIiENtsylfIGFdNKQNzpYGz5YPUhadNWVKbjEg8/5Q5d7zbs6Bggo7Bs2JZRoQWJr1l7H2waa8RR5EEDB02aRhSG72cRK65dysC6bOgixQjHWgni0UBx0oyaXURLU4SaV8FqzfPup944e8pHvsRWVIMdVyDyk+wwT2E3nILF6NJxk7+kk7b4VTXjYxZXSSyw1wZHyG54ZrZKxtLrqz08+ZeerYbC9/zPzPPPdY206bW/appExefne0Su/isqYNocmblaTQJO/9sxqqz8UYjoGIdMHwEsMy1e19g6qhro7FSandmVWYpjUK5wC4dl37etGNnEi4UTfsstScrigXkihEsIKpy3jZ3mmKkg6itiBKDXJ5INOIZWpX5biLlibgxcy92DDZcxzc3/gUTOYcbJk0esKnIGh7oey25nl282KfZpS+bsVcgxsKW5HE5A1OzDerVCN+5x05kHTrjNmPZwpLfrRVhE+5BsVQ9LGZ9LbXp1R0xcgWXRNRMuI+dn2RXnx3Y+1mJJQut9feA78357DNlPz8CXFnpdwNnbkf6nQ8YIZMbN8Km7zozOPS/ZGYfsrl5o3b86sIBreVuh417L9/VvZTnpjxAdlNZUr9yEZjaDK/92HSg7YaLP0dHEnS2tZF0xs2guulm2HjDtHvj+M53mGX2m+aYXK/uZ9f6spn93LIu5CKpJnC2dOyu182cd+1V0LYWzuw3Vo54aiaZYXlKilJ5ltqotZTjbOONM4Ln7GNELYtcZopCboJJ1U42uY7ouq3E2xOX3U/Pm/+e44d+ztAv/hl7/DRu1zayN72RtYXnODRwiOHuX+FU7ysY6TDN+rI8QWt2wG0fWLgec5Pmfi3PArl6u/n5JX9qji+/xzv/cvZnyfXzW3VK91+YmsmR1HPFwikXSvm/3Jx3zv+ywHG3z+RZOvEwjDyNHWsj7hQY0+0UCmM4sS464hbR9m4vFtATw22rZ2Kl5svv5t3LTXoz9z50gvNrd8xuk3t6K2tXIWKxoOMgXHDLGaCbbVCvRvjOPbYjEWEsYNFcbcLrWrexoFzJi9XDUtbXUpvesbZ9OsVDzFZcmMgFuihA9i6EimMxqmp4PuaCKW9c/c4Jtpz/N9oyg/TvuIp1/TdcFsNyz5Ox6mJG6rV7/EIJE/049yK5naq9zrJz0NTyfutJuZjNpQGzSCHdsYMjuR6cqVF67AyJl76f7XteVPFpq+24wzyYzPc9IJC4muXEiIUxrmwltEpMVj1it4Lev3WhVA3pjENfV5xtazqmjy9vs3NzaR0bnjSuw44Yf/Xru2tedtkgeimWGJiDbHjVdoiNlqgubAG4zTYA+cHxQz/n6I+/Qm/xPJm2DTzecTvPqK112TakUQaTerQbv8RdMwZaV9OPzD12Z2/7ilYX1qv89WhjQfd/C20E/a9PnsO2YO+2VdP7FZaPa0G3adkgeh4ub9TvDmUMQ7Wm/bDFjCxGGANwWy0HTSXcd7SNQ7yJvC7S5UbZEW8nZds1a//1eN/8vkatXXCLvSvVLudvxhQA1cTklR8blkleJeWvh5s3aFdyqR7uefAom1a1Tb+XqztijGUK0/sVwuxxLaxtumVFVrWDe5ANr1rR1EgiYaGB7kuPPMfazkQgHV9YX9agGBhM85NjI3QnI3TGI9Ordm7YkuLMqDN9jJ8DVSMOJrWe3CwmCj9w587L3Er3PHh00efhy0KBGlIvd3HYJnmLUY8JdK2vUelznft+7ljbzmPPjXJhIkdR63nHtTC2aSvoAgRFeYdlKTX98/2HhuY9fmN3kvGsM+uzelmH9u3pJZ0pkM4UKGo9/fO+BYKGSyIhlYwymM6SSkZD22mcGc3QmZit9bMFh4ePjZDOFGZ1fAOD6bqVa1dfig/cuZOPvem6ywawVuP+Q0OsaouilEIpRSJqE49YHDk7Pisg1c/nVY/3ze9rVPqelgTQB79+kHsePLpkPZWO/9+Pn+HI2TQXJrLTf5tPFNbiedSbet1DteNA0FQ7FoTtGtU817nv59rOBDt7O+jpiId+XCunZUXWfIP7YrPYejTuhViOaGoUkTDfQDcwOM6qtvp0fNUOeGG9Ri05M5phV18nOadItuCivRxnl6ZM+6/FQNWIg0kl72m14qH8+N7OOGNZh0efG50WWvOJwkYTDvNRr3uodhwImnpMoGt5jWqe63zvp21b/NWv7w79uFZOy7oLqzWJBu1CCqMZ1A/mc21emirw4h2rZx1Xi46vHq6CRnNHzEfpXXnhlm6ODU8ykXWI2oqX7OhhV1+K+x4+6btrrx7vWy2usdR7Wm0cWPnxO9Z1TC9Nf2ZogqhtzxsGEHRMjR/U6x4aKX61RD3Gglpdo5rnGvSY6xctK7KWE7fUrEInSOZ7kW7b0UM0Ys86rhYd33ICn6uNE/EzuDqoAN3Su5JKRrmlf/X0u/K2W7cCtRuoGnkwWYhqxUP58Ws7E0bonp9gaDzHrcnovINOIwqHEuUry54ZGmfPxq55g5z9opHiV5uB5Rg3Gn3MbVmR1SwqOcxUKgrmvkgl6w/UtuOrdsBbjlXKrxl5kBaxpd4VGahmt/WYrVBAztWXtftqB5m5x6/tTBCL2Ny6yHL6uc+jPNfQPQ8eDTxFykKUt/HrNqXYf+ISjzx7kVu2ryIeidSkTck4UF9asa+QPFkhJixLi5dTLj82+qz1vVebDybIpI9B565ZiqDaahjekfK2ni047D9xCQ2zxEGp3Vf7Xiz3PVoo11C9E0tWIjxLzG3jw+NZDp8do+Bq7tzd21Jtqplp1vqVZKQNRtCJ1VZarrCLAqi+jpdK8rpYokjXLXJuLMvFyQIRS/G+O67gtddurLisjZZgth6E5R0pb+uPHB8hV3ABSERtXrS957J2X8/M90G9h9UIzxJhaONhaVNhpVkFkh9IMtIGI2wbuJZergeOnCNmW+zZ2IWloguWqxaBq36/4NW6Cpa7r9Yrdq3lEz98loJbpKc9Rl8qwQ8Ghtm+tqPi8jdynI3fVNsWa015W5/IOnTETTxhacPhue2+2jiTlcSlBBUEX95/HRkco8NbwXd8eIoXbe+ZPqb8vsLQxsPW7/qFH31noy3iCYsgbNkUDpUS1PL7MC0tLl9Gjgat9axl5POVy+8cRLXKm1NNqovFlvwvtjT56NAkL9rew69du4Fbr1jDtjUdVS9HDzKFSJhYTlusNeVtvSMRIecUyTlFuhJmgA5SDAeV3+/IYJojZ9M8cOQcx4cncItF4hFrQeEJ4WjjYep3/cKvvrORUoOEKVeciCwWFlJBPqggk5/Opfzl6kyapJTxiMWx85MLlsvvDjMML/hi+WMW65z96LgbKcFsLVlOW6w1O3vb+fnxEf7PE2eZzBYYmcgznnXYvrYtcDEchHAZGExzaiTDWNahMx7BVorTl7KkM4VFhWcY2ngQ/W6tJ/J+9Z2NJEDDMF6UaHl34WIm0CBNx2FahVHuctixtp3Hnh8lbivSmTwnhifmXbnk96qdlbo9/DIdL+S6WcrV4YcbpBmWM6+UxdpiSUDU8x0ZGEzzg4Fhdq7rKIu5g6vXd1BwYV3n/GkW6kUQq+fuPzTEzt4Ojp6fIOcUWdMR49SlDENjOV64tXvR5xR0G693v1sPF5xfLuMwuHMrJUy54lpeZC0mpIJ8UGFaWlz+cpVy9Rw+O0auUOTo+QmuWm9WLs3tIPzsMFfygtejI1uqcw6LYG50FmqLlrJILZA3qpaU9x/9azuA8C3wCCIX2NY17XQkIhwbnqTgajavSjJVcEMhPBej3v1uLSbycyeUcVsxnnVWLI7CNPFfijAJwpYXWYsJqaAfVNCzuhJzX65YxGb72g7aohbRiF0XS99KXvB6WCSX6pyX6rjDEqQZdhZqi0G5TsM0Yw4LpX5zbWeCtZ2mbsImPBfDz353qffa7/Yz34TybDprVmyubluROArTxH8pwiQIW15kLSakwvSggmShl+u+h0+yuqM+PvqVvOD1GggX65wX+1ujrdoJkrB19EFPxKqlHmJ+qX6zVSYUlbzXfref+SaUW3vayTsuqWR0xe9MWCb+SxGmfqLlRdZiHUKYHlS9ma8jnDsLrfcAs9wXPOwDYbMuG68VYeroG2kiVisxP19fsVC/2UoTikre62rbz3ItY4NppyGsiH4Sln6i5UXWUkIqLA+qnlTaEfrdQdSKsA+E4nJqXBppIlar+J+F+or5BvVWmlBU8l5X036CsIyFnUawira8yILWFFKLUWlHWEkHsdD2HmHaey9oWq1jbDYapf+ohZivVjQ1w4Si0oG90ve60vZTC8tYI9MoVlERWcJlVNMRVhprNJYxSQifHpqgIxFhTYc5v5+raOZ2dvWa5az0Oq3UMQr+UW27q4WYr1Y0NfqEopqB3e/32m/L2EoIgwWpUayiIrLqSBgaZiX41RGWvwQTOZcuLxv2sfOTrOlI+L6Kpryzq9csp9rrLNQG6mVpa5Q2GASNVDfLad+1EPPV9hWNPqGoZmD3+7322zJWLWHwSpTTKFZRyfheJ8KU5n8p/MoSXZ4huLTdSPnWGn6topkvo2+9Mv5Wc53F2sCuvsq391kujdQG68nAYJr/9C9P8M4vPcaPnz5P1Cb0dbOc9l0a9P3MqF5tX1GLMtSTarOe+/leB7ntUHnfUe6VuDiZCyybeph2RVkMsWTViUYxbYJ/M7DymVcpO7fZ0y2y4uzcS81i6jXLqeY6QbeBoK+/FEFYkkqDx/HhCVYlTXf4y+fT3Li1e3rgCEPdzGW57dtvK8fcviJmK9qiFvc9fHLBZ+hHGYKyOsZtxUNHh8m7Zm/KHevaidp2XQb2IGNLa+GVaJUwi5YUWUG8oI1i2izhR0dY/hL0dMTZua6Do0MTpNqiK87OvZTpvF6xH9VcJ+g2EPT1FyOoINbS4FFwNR1xG6UUAMfOT3Jz/+pQ1M18hCm2qdRXlD/D1R2R0Ljo/bzu2XSWiaxDR9wmk3f48VPDxCIWO3o7Zm0rViuCWmRR3nd0JCLkCu6KvBJ+PMOwL2gq0XIiK6gXNEydYr2Y+xL0r+3gj15+xaL1XKkAXmoWU69ZTjXXCboNBH39xQjKylYaPEoDRyJqTw8eYamb+QjjLL5ezzCotnL/oSG29rTTl0pwbHiS4bEskwWX9niEq9d3hXZ1WzUs1P/67ZXw6xk2wsrelovJCmp37iD96UFSTUxCNTFDS8V21Cv2o5rrBN0Ggr7+YlQb6+IXpbiOHWvbyTlFsgWXbMElZluhqZv5CGNsU72eYVBtpXTdtZ0Jbt3ew9quBFtXJbFtVdexpFYs1v+W9x0lrwSaaa9EtW0vqGcYBC1nyQrKZdIops0gqXZ2s9Qspl6znEqvE3QbCPr6ixGUla1kEUolo1y/OcXA4DijGYfbdvTwu7duDaxuKrHohm0WH0YXfS2vO5F1iFjQlZgpR7VjSZhWtC7W/37gzp1VeyUWI8xWdb9pOZEV5MMNW6cYNsIcM+QXQbeBoK+/EEG5v8qF50TO4WVXrQs8dUPQSRaXO/CH0UVfy+tGbcV41uGaTTN1U81YsthzBkIXN+xn31Gqy4sTOc6NZbk4WSBiKd53xxXLPmeYBGs5SmsddBkuY+/evfrAgQM1OXd5wy5/QYM2tQtwz4NHLxPApd9bbd+tViSsnWS9CfI9WGn/uNxnWO33gmor5deN2YqhsRybV7ctq64Wes55xyVTKNZ9jKp3u/vuE2f4xA+fpeAW6WmP0ZdKYFnWsu4zDOO6UupRrfXeuZ+3nCULIBm1+MWJERSKGzanQi+wWmXwWe4MtVXqp9kJq5WtHL/a2mLnCdKiu9KA5OU8w+VY7oJqK3OvW56gcyzrkEpGpmOylirfQs/5BwMj3NLfU/fA/npbCI8OTfKi7T2Xibrl3GeY09O0VOB76WWORWxesauXm/tXM1UoBl2sRWmlBJILBfOCmWV98OsHuefBo7PuvZXqpxUYGEwv+KyDxq+2ttR5gkyyGERAclCLkfxgV1+KfXt66UxE2d3XNWuV4VLtYqHnrFCBBIXXezGFn20tzIH0FVmylFL7gI8DNvBZrfVH5/w9BfxPYIt3zo9prf+H97eTwDjgAs585rR6EWa1u9DMNsgyB2Ehmm+muNgsN8zPVKiOoGORlsKvtrbUeYJMzxBEzGqjx2Iut10s9Jxv2JxiPOs0fdzwYm0tDPty+sWSliyllA18Cng1sBt4q1Jq95zD3gMc0VpfB7wM+FulVKzs7y/XWl8fpMCC8KrdxWa2fpR5OdaBsFiIlprlVls/YbaUtDpht2j41X8sdZ5aWBQqbfdBpPlolO1RFmK57WKh5/y7t24NJNVKvfvGhdrazt72qseeMKenqcRdeDNwTGt9XGudB74KvH7OMRroVCZdcgdwEXAIGWF9mRcbXFZa5uWKpbAMeEt1YNXUT1iEozA/YZ0ElfCr/6jkPNXkl1sKP/PP1YJ6DZC1EhEraRfzPecgnkEQfeNC93l0aLLqsSeMeeNKVOIu3AicKvv9NHDLnGM+CXwbOAt0Am/WWpeCnTTwgFJKA/+gtb53ZUVePmHMkgyLm8v/4CXbVlTm5Zqyw2LCX8oMXM0zFddiuAmzyR/86z/q3Q/5nX/Ob+qRv62WruhaPM96P4Og+sb57vO+h0+GYl9Ov6jEkqXm+Wxu3odXAY8DG4DrgU8qpbq8v71Ya/1CjLvxPUqp2+e9iFJ3K6UOKKUODA8PV1L2qgmr2l1sJrTSMi/XOhAWq99Ss9xq6ifslpJWJwwm/8WsHX71H40cYFwr/LTczUctLfNhHVeqIUxtJCxjj19UYsk6DWwu+30TxmJVzjuAj2qTdOuYUuoEcDXw71rrswBa6/NKqW9i3I8Pzb2IZ+G6F0yerGpvpFLCqHaXmgmtpMzLtQ4sVKabtnVzz4NH6xYMX8kst9L6CZulRFJPzCbojPSVWDv86j/CEmDcKtTaMh/GcaUawtRGwupxWi5LJiNVSkWAo8AdwBlgP/DbWuvDZcd8GhjSWv+lUqoXeAy4DsgAltZ6XCnVDjwI/Fet9f2LXbOWyUjDSq0G3JUkaZtbpp297fxgYDjQhG8rqacwJKwLY1nCTr3EaLMmw5W21rzPthoWe4/C1kYacQK6UDLSijK+K6VeA/wdJoXD57TWf62UeheA1vozSqkNwOeBPox78aNa6/+plNoOfNM7TQT4X1rrv17qeq0osqohqOzIQXdUfnQEYXl5g67LRqGenf8Hv37QZJ1WMxESRa0ZTGf52Juu8/Va9SYs7T4owiYi6k0l99/qbWSlrCjju9b6e8D35nz2mbKfzwKvnOd7xzEWLcEngsyOHHQwvB/BmWEx6wddl41CPQNyw+QymY+VDIILtftGHFiXU+agXdErwY9nVMl7VMu+sRHbmV+05LY6jUwtBp1KX4BKB6FavVCNIEz8rstWp57PPMyxILVYHReW5K/V9BcrKXNYJljV4NczCrLvDEs7C4qW2lanGfB7FUg1+VEqWf1Vy3wrYV914nddCvV95mFeJVaL1XFhyIVXbX8RhjLXE7/uN8i+s9We2VzEktVg+G0BqcYyVonJvZbunUotDUGZpv2uS6H+1iU/rR1+tsNaWCLCYBmutr8IQ5nriV/3G6SVttWe2VxEZDUYfr8s1b4ASw1CtXyhKhEmQZqm/a7LVo5jKNGoYtTvdlgL93IYXNbVvjNhKPNS+Pne+nW/Qb5HjfDMaomIrAbD75fF7xeg1i/UUsJk7sw477gcH57gj7/2BHfu7q2pUPHz3ls9jqGcRoyl8dui6+fkqiQCDp9Nc/pShqt6O9jS0x5IDFq170xQ1uxKz+f3e+vncw/qPQpzrGM9kJisEFDtnlp+Zkf2OzYo6Fij8pi14fEsjz0/ClpT1MWa78fl572HJY5BNtReHn7HTs6NF8s7Lm1Ri/sePlnVcymPgdrV18XOdR08fW6Cp86NBRKDVu07U0ncnN9xodWcz+/3NsxxgpXSDPewEirKk1VvWilPVhjytwQ166sF5fmnHjk+Qq7gApCI2rxoe0/Nc1H5de+V5myqZV2HoW02KrXMg7aS5xLG/Gx+t+G59zg8nuXw2TEKrl6WNbuaOvMz15qECxgapR5WlCdLqB1h2LR4ubFBC30eZPBwuWl6PFMgaivyrmbPRrOVZq0DLv2690rcKLV2KYahbTYqtXSRrOS5rCRmslaDnd9urPJ7LFmz47aaZc2udv/XSuvMr5ABCRcwNEM9iLswYMK0Med8LGQq/+4TZ2qWqmGpay92jXLTNAqUUty4tZs1HaaTbJSAy0rcKLV2KYa9bYaZWrpIVvJclruUv5apWSqlUtd1+T0eG54kHrFAKVLJ2LLekWrqzK+QgbCECwRNM9SDWLICptaB4iudfS40a/7CI8+zu6+rplaO5c7YSzPjkjUhatsUtW6ogMtKFjjUeml0o64KCot7oVaBxit5Lsu1sAVt1azGouG3NbuaOvNrYVKrpz0o0Qz1ICIrYGrpVvDD1LpQIx8ay3JL/+rLPvez8a/0BWvU5f8llhqkay2C/Gqb9RQ9zeBeWIqVPJflvhNBD3bLzUE3Y81OLduaXW2d+SGuG3WC4zfNUA8isgKmlkKg2tnnfIPhQo28tyvBeNapaeP34wVrxOX/lTLfYPvcyCQbUgk++PWDKxY0frTNeoueoC0u9WClz2U570TQg91yc9D5Zc2udz/S6mkPSjRDPYjICgG1eoGr6ZgWGgxfsWstPxgYnv5uqZG//dYt837uZ+NvhheslswdbGO2wlKKaMRmdUfEF0Gz0rZZb9ETtMWlXjTzoF/NZG8pkdeo1uxGLbffNEM9iMhqYqrpmBYaDI8OTS7YyLev7ahp42+GF6zWlA+29zx4lFjEDpUVp96iJ2iLS7Myn6Bvi1r87QNHGcs6pJIRdnuWo5Wmf6lmslepi7QR+4xGLbffNHo9iMhaIWEJsp2Pamafiw2GCzXyejT+Rn/B6kmYrDjlWcWfGRpnz8auqmJilvteifWzdpTexZIQct0ipy9mQEF6Kk9b1Obeh6ZWZDldzmRPEMKMiKx5CGoLBb+pxhJUbwtAGMVpGMtUDWGx4pS/F9dtSrH/xCUeefYit2xfRTwSWVL0rOS9Cpv1s9Hb1HyUhNCRwTHiUYtE1CZbcDk3lmNXX9eKLKfLmey1ArVOOtxsbTRMiMiaQzUdfCME2VbaMdU75iJs4nQxN8XRoclpF4kCcq4OZWcUFitO+XuRSka5Zbvi8NkxDp4a487dvUuKnpW+V2EZjMPYzv2gJIQmsg4dcRuAeMRiLFtYseU0LBMFCI/4qGU7atY2GiYkGekcqkl+1kzJGmuZPHEuYUwwN1+ZXLfIJ374LOlMgYgFvzh+kUeOXyRqE0gyxhILJWWs5zNcjLnvxdrOBLfvXMvuDV0V7bXZLO9Vte28UfaJLCXn7EhEyDlFAHJOka5EdMWCKOi9T0v4mXx1pc+1Fv1lqUz/8WsHOT48QcF1Q9MXNxtiyZpDEFso1Jt6bIezGGGKHSoxX5nOjWUpuMVp10iHN/AfH57iRdt7gOrSYfhRt0vNPMNgxan2vZhbV3Fb1Tw9SD3wY3VvGC0KJYvp+s44R4cmyDlFtNZs62lbseU0LO5ev7wUtcxVuNz+srxMaNBa8+hzo9M7YwTdFzcbIrLmUM0AERb3TDWEoTMPozidr0wXJwv0tMcAZrlGxrIFIJgBsxFc1JW+FwODab70yHM8fGyEVW1Rdm/oJJ0pcDadNRvsrm6r2XtVD1eQH6t7w/RcS5QLoamCO726cNuaDl/qMQwTBb+EjR/P1e/+srxMnckouYJLPKI4dn6SNR2JwPviZkPchR4l8+nhs2l+fnyEkxcmljRXh8U9Uw1hcNWFxSWwVJkilpruaEuukZJbBCobMP2u40ZwpVXyXpSE6OGzY6xKmvv55fNpCq7L1p52erviNXuv6rUPXzXtvPy5Do9neeT4CL84PsIDR86F0m24qy/FB+7cyWfffhNfe+et/OPv3VSRK7hRWO4ej3Px4331u78sL9OOte3G5as16Uw+FH1xsyGWLGZbHnb1ddEWtXn63ARTBZfdfamab6FQT8LgqguLS2CpMr3vjiv4wcAw6UyB7Wva2H/iEhqmLS7LSYexUsK+12WJpd6LkhAtuJqOuI1SCoBj5ye5uX81g2mHD9y5c9n3sRj1shotZ3Vv3nF57PlR4hGLqK1QSoXWbdjM+OWl8GvXCj/7y/Iyre1M8MIt3Rw+O4alLFLJaOB9cbMhIovLO93+tR2s7jAz6Wo6+rCsRlmMsLjqwihO5ytTKeHqRM7hlu2rp1cXrutcuDOqZR2Hfa/LSikJ0Y5EhFzBJRG1p1eo1bo91nOiUe3q3uPDE8RtIzjzrubGrSmith1Kt2Ez45ew8et99bO/3Nnbzid++CwFt0hPe4y+VILtaztEyNcIEVn40+mGIdapEhoxjixIltO51bKOS53/lx55jh8MjKBQ3LDZn/ZVz7igkhDdsbadx54fBUwAbsy2at4ewzLRKKf0XP/4a09Q1EVSydh0Atei1qFyB7cKfgibsFntBwbT/GBgmJ3rOjg3luXiZIGxjMP77rgiVONUMyEiC3863UYJXF3qpa/lqrilztsIlsBKqEfHmikUuaW/Z1rE+SHo62nhKQnRVDLK9ZtTDAyOM5pxuG1HD79769aaPvewTjR29aW4c3fvivqiZnmHmokwWe3Lx6n+tR2ASUdzdGiS1wZctmZFRBazO91swWFgcJxLUwVu29HDwGC6ohckDLFOlbLQS18ra1wl520US2Cl1LJjrZWgr6eFp1yITuQcXnbVuroJgrBZF8pZiQCsxTsUtGgL+vrNRiONU82CiCxmu2B+9uxFVrVFefGO1UQjdsWdVBhdENVSq8G7kvM2iiUwDNSqo6y3hSfIGX6YrAvlrEQA+v0OBT3xCfr6zUgzjFONhogsj119KdZ2JvjVq9fNaoCwdCc1MJhmeDw7K99PJXu0hY1aDd6VnFdmWJVTq44yzBaeVmK5AtDvdyjoiU+l1xdrV+WE1VXezEierDKWk9OkNNuKRWx+5YrVAPz02EUKjttwMy6/csMs57y1unYzUss8Y6X8Rx9703VNlfeoFfD7HQo6J1sl169XzrNmoRFzOzY6YskqYzkWgrmb4fZ2zZxjuSb6xWZltZy11WqWU8l5G3WGFcQsWixO9aVRLCV+v0NBu5YquX7Q1rZGpNxSWmrb9z18siZtu1HenVoilqwylmMh8HO2t9SsrNaztlrNcio5byPOsIKcRZdbnPbt6eX+Q0Oh31i4EWkkS4nf71DQOzNUcv2grW2NTK3bdiO9O7VELFllLMdC4Odsb6lZWT1mbbUKCK7kvGENRl6IMMyiK1252eqzyeXi5zOux3Pw8x0K2mJayfWDtraFjWraWK37rzD0j2FARNYcqu2k/DTRLxW4KsHh4SIMz2OpjkxWaK0Mv55xoz6HoCc+S10/rGEGQUxsqm1jte6/wtA/hgFxF64QP030SwWuSnB4uAjD81jKXRKGDcEbGb+esTyH2hDGMIOg3GTVtrFa91/Vnn9gMM09Dx5turCHikSWUmqfUupppdQxpdSfzfP3lFLqO0qpg0qpw0qpd1T63WbArxVZS8UgBB0jIcwmDM9jqY5MYlZWhl/PWJ5D7QjbitigBHW1bazW/Vc152/m+K0lRZZSygY+Bbwa2A28VSm1e85h7wGOaK2vA14G/K1SKlbhdwWPpWZlYZy1tTJheB5LdWRhsLY1Mn49Y3kOrUNQgrraNlbr/qua8zezpbeSmKybgWNa6+MASqmvAq8HjpQdo4FOpZQCOoCLgAPcUsF3hTKWikEIOkZCmE3Qz2Op4OCwxqyEHb9jauQ5tA5BBeMvp43Vuv+q9PzNHL9VicjaCJwq+/00RjyV80ng28BZoBN4s9a6qJSq5LsAKKXuBu4G2LJlS0WFFwRh8Y4s6BVijUjJdeG6Rc6NZXn8+VG+f+gc77vjCl577cZlnVOeQ/OxkBAPSlA3QhtbqM6aeZVoJSJLzfOZnvP7q4DHgV8FrgAeVEr9pMLvmg+1vhe4F2Dv3r3zHiMIQvUEbW1rNO4/NITrFjl6foJ4xGJ1e5SxrMMnfvgs29d2LLsu5Tk0D0ut5AtK7IS5jS1WZ81s6a1EZJ0GNpf9vgljsSrnHcBHtdYaOKaUOgFcXeF3BaGlkLxV4ebMaIZzY1niEYtE1AagKxFhZDLfcjl+Wo1K382lUqeEWewExWJ19oE7d4beCrdcKhFZ+4ErlVL9wBngLcBvzznmeeAO4CdKqV7gKuA4MFrBdwWhZWjUfEmtxMbuJI8/P8rq9hnXRc4p0tMea4oYEWF+qnk3mzmGqFYsVWfNKkyXFFlaa0cp9V7g+4ANfE5rfVgp9S7v758BPgx8Xin1JMZF+P9orS8AzPfd2tyKUEIsJeFFsiCHn317evn+oXOMZR26EhFyTpGcU2RbT1tTxIgI81PNu9nMMUS1olXrrKKM71rr7wHfm/PZZ8p+Pgu8stLvCrVDLCXhRmbA4WdXX4r33XEFn/jhs4xM5ulpj7Gtpw3LsiQnXRNTzbu5khiiVp0EN3Pc1WJIxvcmo5nzjTQDki+pMXjttRu5583X8WvXbmBLTzvb1nTIRKXJqebdXG6OqWZOurkUYcgrGASyd2GTIZaScNOqs7lGpFljRIT5qfbdrLZ9DAym+dC3jzAykWNNR5wd69pZ02H66lYJF2jFd0osWU2GWErCTavO5gQh7NTy3SxZsC5O5FndFiVbcHn0uVEuTGRlEtzkiCWryRBLSfhpxdmcIDQCtXo3S2Ecqzti5ArudGqQY+cn2dVnyyS4iRGR1WQ0QtZfYYZWDYIVhFaiFMaxY207jz0/CkDMVlyYyMkkuMkRkdWEiKWkMZCVoILQGpTSF6ztTPDCLd0cG57k4kSeno64vO9NjsRkCUJAyEpQQWgN9u3pJZ0pkM4U6OmIs7uvi2s2pfirX98tAqvJEZElCAFxZjRDZ2K2MVmCYAWh+ZAFL62LuAsFISBaNQNysyDxdEI1SBhHayIiqw7UqzOWTr+x8HslqDz/+iHxdIIgVIK4C2tMvTL8tnIm4UbFTxeCPP/6IvF0giBUgliyaky9NgSWjYcbE79cCK3+/OttxavXzgpinRSExkYsWTVmseDmgcE09zx4lA9+/SD3PHh0RVYHCaJubVr5+QdhxavHzgpinRSExkdEVo1ZqDOO2crXDlS202ltWvn5B+G6K1+SX9R6+ud9e3p9u4a4JIVGw0/DQbMgIqvGLNQZK/C1A61Hpy+El1Z+/kFY8eqxJL9ZrJNhHXjDWq5GRSyv8yMiq8Ys1Bmfn8hx5GyaB46c4+fHR1a8UajkYWltWvn5B2XF29WX4gN37uRjb7qOD9y50/e6bgbrZFgH3rCWq5ERy+v8SOB7HZgb3DwwmObUSAYUdCUi0zuyX9XbwbY1Hb5dR2gtWvX5N+um6M1wX2FdkBHWcjUy9VoM0miIJSsA7j80xM5eI6ZyTpF4xDyGp4cmWsK9Iwh+0qxWvGa4r7C6PMNaLj+ptzu0GSyvtUAsWQFwZjTD1jXtdCQiHBueZCLr0JWI0JWMNlQHKghhoVmteI1+X2Hd1SCs5fKLIJLlNoPltRaIyAqA8h3Z13Ya8+rcF14QBKHRCevAG9Zy+ZUXLQh3aMnyWl7+N9+0qaEnCX4gIisAwvqCC4Ig+ElYB94wlstP61NQ8VGNbnmtBSKyasRiM5IwvuCtjmTWFoTaENaBN2zl8tP61Ozu0EZCRFYNqGRGErYXvJWRzX4FQQgaP61P4i0JD7K6sAZIvpDGQp6XIAhB4+fqvGZYmdosiCWrBki+kMZCnpcgCEHjt/VJvCXhQCxZNUDyhTQW8rwEQQgasT41J2LJqgHiD28s5Hn5iywiEITlIdan5kMsWTVAZiSNhTwv/5A94QRBEGYQS1aNkBlJYyHPyx9kTzhBEIQZxJIlCIJvtMKecIIgCJUiIksQBN+QRQSCIAgziLuwSZBgYyEMyCICQRCEGcSS1QRIsLEQFmQRgSAIwgwVWbKUUvuAjwM28Fmt9Ufn/P1PgN8pO+cuYK3W+qJS6iQwDriAo7Xe61PZBQ8JNhbChCwiEARBMCwpspRSNvAp4E7gNLBfKfVtrfWR0jFa6/8O/Hfv+NcBH9BaXyw7zcu11hd8LbkwjWQsF3epIAiCED4qcRfeDBzTWh/XWueBrwKvX+T4twJf8aNwQmW0erCxuEsFQRCEMFKJyNoInCr7/bT32WUopdqAfcA3yj7WwANKqUeVUncvt6DCwuzb00s6UyCdKVDUevrnfXt661aGgcE09zx4lA9+/SD3PHi0rgJHNngWBEEQwkglMVlqns/0Ase+DvjpHFfhi7XWZ5VS64AHlVJPaa0fuuwiRoDdDbBly5YKiiWUKAUbl7vL3nzTprq5y0qWpFQyOsuSVEnAsx9uPnGXCoIgCGGkEpF1Gthc9vsm4OwCx76FOa5CrfVZ7//zSqlvYtyPl4ksrfW9wL0Ae/fuXUjECQsQZLDxcgPvVyLOytnYnSSdKUxfF1rLXSoIgiCEk0rchfuBK5VS/UqpGEZIfXvuQUqpFPBS4Ftln7UrpTpLPwOvBA75UXAhPCw3y7dfbr4wuEsFQRAEYS5LiiyttQO8F/g+MAB8TWt9WCn1LqXUu8oO/Q3gAa31ZNlnvcDDSqmDwL8D39Va3+9f8YUwsNzAe7+2YJHcTIIgCEIYqShPltb6e8D35nz2mTm/fx74/JzPjgPXraiEQuhZbpZvP918kptJEARBCBuS8V1YMcu1JImbTxAEQWhmZO9CwReWY0kKelWkIAiCINQSEVlCoIibTxAEQWhWxF0oCIIgCIJQA0RkCYIgCIIg1AARWYIgCIIgCDVARJYgCIIgCEINEJElCIIgCIJQA0RkCYIgCIIg1AARWYIgCIIgCDVARJYgCIIgCEINkGSkgtCiDAymZ2Xb37enVxLDCoIg+IhYsgShBRkYTHPvQydIZwr0pRKkMwXufegEA4PpoIsmCILQNIjIEoQW5P5DQ6SSUVLJKJZS0z/ff2go6KIJgiA0DSKyBKEFOTOaoTMxO1qgMxHhzGgmoBIJgiA0HyKyBKEF2didZDzrzPpsPOuwsTsZUIkEQRCaDxFZgtCC7NvTSzpTIJ0pUNR6+ud9e3qDLpogCELTICJLEFqQXX0p7r69n1QyymA6SyoZ5e7b+2V1oSAIgo9ICgdBaFF29aVEVAmCINQQsWQJgiAIgiDUABFZgiAIgiAINUBEliAIgiAIQg0QkSUIgiAIglADRGQJgiAIgiDUABFZgiAIgiAINUBEliAIgiAIQg0QkSUIgiAIglADJBmpIAiCICzAwGCa+w8NcWY0w8buJPv29EoSX6FixJIlCIIgCPMwMJjm3odOkM4U6EslSGcK3PvQCQYG00EXTWgQRGQJgiAIwjzcf2iIVDJKKhnFUmr65/sPDQVdNKFBEJElCIIgCPNwZjRDZ2J2VE1nIsKZ0UxAJRIaDRFZgiAIgjAPG7uTjGedWZ+NZx02dicDKpHQaIjIEgRBEIR52Lenl3SmQDpToKj19M/79vQGXTShQahIZCml9imlnlZKHVNK/dk8f/8TpdTj3r9DSilXKbW6ku8KgiAIQhjZ1Zfi7tv7SSWjDKazpJJR7r69X1YXChWjtNaLH6CUDRwF7gROA/uBt2qtjyxw/OuAD2itf7Xa75bYu3evPnDgQLX3IgiCIAiCUHeUUo9qrffO/bwSS9bNwDGt9XGtdR74KvD6RY5/K/CVZX5XEARBEAShKahEZG0ETpX9ftr77DKUUm3APuAb1X5XEARBEAShmahEZKl5PlvIx/g64Kda64vVflcpdbdS6oBS6sDw8HAFxRIEQRAEQQgvlYis08Dmst83AWcXOPYtzLgKq/qu1vperfVerfXetWvXVlAsQRAEQRCE8FKJyNoPXKmU6ldKxTBC6ttzD1JKpYCXAt+q9ruCIAiCIAjNxpIbRGutHaXUe4HvAzbwOa31YaXUu7y/f8Y79DeAB7TWk0t91++bEARBEARBCBtLpnAIAknhIAiCIAhCo7CSFA6CIAiCIAhClYTSkqWUGgaeq/Fl1gAXanyNZkPqrHqkzqpH6qw6pL6qR+qseqTOFmer1vqyVXuhFFn1QCl1YD7TnrAwUmfVI3VWPVJn1SH1VT1SZ9UjdbY8xF0oCIIgCIJQA0RkCYIgCIIg1IBWFln3Bl2ABkTqrHqkzqpH6qw6pL6qR+qseqTOlkHLxmQJgiAIgiDUkla2ZAmCIAiCINSMlhNZSql9SqmnlVLHlFJ/FnR5wopS6qRS6kml1ONKqQPeZ6uVUg8qpZ7x/l8VdDmDRCn1OaXUeaXUobLPFqwjpdSfe+3uaaXUq4IpdbAsUGd/qZQ647W1x5VSryn7m9SZUpuVUj9SSg0opQ4rpd7vfS5tbR4WqS9pZwuglEoopf5dKXXQq7O/8j6XNrZCWspdqJSygaPAnZjNq/cDb9VaHwm0YCFEKXUS2Ku1vlD22d8AF7XWH/UE6iqt9f8TVBmDRil1OzABfFFrvcf7bN46UkrtxmyefjOwAfgBsFNr7QZU/EBYoM7+EpjQWn9szrFSZ4BSqg/o01o/ppTqBB4F3gDchbS1y1ikvv5/SDubF6WUAtq11hNKqSjwMPB+4I1IG1sRrWbJuhk4prU+rrXOA18FXh9wmRqJ1wNf8H7+Aqbjalm01g8BF+d8vFAdvR74qtY6p7U+ARzDtMeWYoE6WwipM0BrPai1fsz7eRwYADYibW1eFqmvhWjp+gLQhgnv16j3TyNtbMW0msjaCJwq+/00i798rYwGHlBKPaqUutv7rFdrPQimIwPWBVa68LJQHUnbW5z3KqWe8NyJJZeE1NkclFLbgBuAXyBtbUnm1BdIO1sQpZStlHocOA88qLWWNuYDrSay1DyftY6/tDperLV+IfBq4D2em0dYPtL2FubTwBXA9cAg8Lfe51JnZSilOoBvAP9Baz222KHzfNZy9TZPfUk7WwSttau1vh7YBNyslNqzyOFSZxXSaiLrNLC57PdNwNmAyhJqtNZnvf/PA9/EmIKHvHiHUtzD+eBKGFoWqiNpewugtR7yOvgi8I/MuB2kzjy8OJlvAF/WWv+L97G0tQWYr76knVWG1noU+DGwD2ljK6bVRNZ+4EqlVL9SKga8Bfh2wGUKHUqpdi9gFKVUO/BK4BCmrt7uHfZ24FvBlDDULFRH3wbeopSKK6X6gSuBfw+gfKGj1Il7/AamrYHUGTAdlHwfMKC1/n/L/iRtbR4Wqi9pZwujlFqrlOr2fk4CrwCeQtrYiokEXYB6orV2lFLvBb4P2MDntNaHAy5WGOkFvmn6KiLA/9Ja36+U2g98TSn1B8DzwJsCLGPgKKW+ArwMWKOUOg18CPgo89SR1vqwUuprwBHAAd7TiitxFqizlymlrse4G04C7wSpszJeDLwNeNKLmQH4T0hbW4iF6uut0s4WpA/4grcC3wK+prX+P0qpR5A2tiJaKoWDIAiCIAhCvWg1d6EgCIIgCEJdEJElCIIgCIJQA0RkCYIgCIIg1AARWYIgCIIgCDVARJYgCIIgCEINEJElCIIgCIJQA0RkCYIgCIIg1AARWYIgCIIgCDXg/w+Uru0KlrSoCgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Indexing for random sample\n",
    "sample_idx = 10\n",
    "\n",
    "# Getting the original and denoised time series\n",
    "original_ts = X_test1[sample_idx, 0, :]\n",
    "denoised_ts = denoised_X_test[sample_idx, :].flatten() \n",
    "\n",
    "# Creating a scatter plot\n",
    "plt.figure(figsize=(10, 5))\n",
    "plt.scatter(range(len(original_ts)), original_ts, alpha=0.5, label='Original')\n",
    "plt.scatter(range(len(denoised_ts)), denoised_ts, alpha=0.5, label='Denoised')\n",
    "plt.legend()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e86d98be",
   "metadata": {},
   "source": [
    "## The End"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
